استخدام تعبير تحويل البيانات في تعيين تدفقات البيانات
ينطبق على: Azure Data Factory
Azure Synapse Analytics
تلميح
جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!
تتوفر تدفقات البيانات في كل من Azure Data Factory وخطوط أنابيب Azure Synapse. تنطبق هذه المقالة على تعيين تدفقات البيانات. إذا كنت جديداً في مجال التحويلات، فيرجى الرجوع إلى المقالة التمهيدية تحويل البيانات باستخدام تدفق بيانات التعيين.
توفر المقالات التالية تفاصيل حول استخدام جميع التعبيرات والوظائف التي يدعمها Azure Data Factory وAzure Synapse Analytics في تعيين تدفقات البيانات. للحصول على ملخصات لكل نوع من الوظائف المدعومة، ارجع إلى المقالات التالية:
- دالات التجميع
- دوال الصفيف
- دوال البحث المخزنة مؤقتا
- دوال التحويل
- دول التاريخ والوقت
- دالات التعبير
- وظائف الخريطة
- الرموز الزجرية
- دوال النافذة
قائمة أبجدية لجميع الدالات
فيما يلي قائمة أبجدية لجميع الدالات المتاحة في تعيين تدفقات البيانات.
ش
abs
abs(<value1> : number) => number
القيمة المطلقة للعدد.
abs(-20) -> 20
abs(10) -> 10
acos
acos(<value1> : number) => double
حساب قيمة معكوسة جيب التمام.
acos(1) -> 0.0
add
add(<value1> : any, <value2> : any) => any
إضافة زوج من السلاسل أو الأرقام. إضافة تاريخ إلى عدة أيام. إضافة مدة إلى طابع زمني. إلحاق صفيف واحد من نوع مشابه إلى آخر. مثل + عامل التشغيل.
add(10, 20) -> 30
10 + 20 -> 30
add('ice', 'cream') -> 'icecream'
'ice' + 'cream' + ' cone' -> 'icecream cone'
add(toDate('2012-12-12'), 3) -> toDate('2012-12-15')
toDate('2012-12-12') + 3 -> toDate('2012-12-15')
[10, 20] + [30, 40] -> [10, 20, 30, 40]
toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS') + (days(1) + hours(2) - seconds(10)) -> toTimestamp('2019-02-04 07:19:18.871', 'yyyy-MM-dd HH:mm:ss.SSS')
addDays
addDays(<date/timestamp> : datetime, <days to add> : integral) => datetime
إضافة أيام إلى تاريخ أو طابع زمني. مثل + عامل تشغيل للتاريخ.
addDays(toDate('2016-08-08'), 1) -> toDate('2016-08-09')
addMonths
addMonths(<date/timestamp> : datetime, <months to add> : integral, [<value3> : string]) => datetime
إضافة أشهر إلى تاريخ أو طابع زمني. يمكنك اختيارياً تمرير منطقة زمنية.
addMonths(toDate('2016-08-31'), 1) -> toDate('2016-09-30')
addMonths(toTimestamp('2016-09-30 10:10:10'), -1) -> toTimestamp('2016-08-31 10:10:10')
and
and(<value1> : boolean, <value2> : boolean) => boolean
عامل التشغيل المنطقي AND. مثل &&.
and(true, false) -> false
true && false -> false
approxDistinctCount
approxDistinctCount(<value1> : any, [ <value2> : double ]) => long
الحصول على العدد الإجمالي التقريبي للقيم المميزة للعمود. المعلمة الثانية الاختيارية هي التحكم في خطأ التقدير.
approxDistinctCount(ProductID, .05) => long
array
array([<value1> : any], ...) => array
إنشاء صفيف عناصر. يجب أن تكون جميع العناصر من نفس النوع. إذا لم يتم تحديد أي عناصر، فإن صفيف السلسلة الفارغة هي الافتراضية. مثل [] إنشاء عامل تشغيل.
array('Seattle', 'Washington')
['Seattle', 'Washington']
['Seattle', 'Washington'][1]
'Washington'
ascii
ascii(<Input> : string) => number
إرجاع القيمة الرقمية لحرف الإدخال. إذا كانت سلسلة الإدخال تحتوي على أكثر من حرف واحد، يتم إرجاع القيمة الرقمية للحرف الأول
ascii('A') -> 65
ascii('a') -> 97
asin
asin(<value1> : number) => double
حساب قيمة معكوسة جيب الزاوية.
asin(0) -> 0.0
assertErrorMessages
assertErrorMessages() => map
يُرجع مخططاً لجميع رسائل الخطأ للصف ذي معرف التأكيد باعتباره المفتاح.
الأمثلة
assertErrorMessages() => ['assert1': 'This row failed on assert1.', 'assert2': 'This row failed on assert2.']. In this example, at(assertErrorMessages(), 'assert1') would return 'This row failed on assert1.'
associate
reassociate(<value1> : map, <value2> : binaryFunction) => map
إنشاء مخطط للمفتاح/القيم. يجب أن تكون جميع المفاتيح والقيم من نفس النوع. إذا لم يتم تحديد أي عناصر، تعيينها افتراضيا إلى خريطة سلسلة إلى نوع سلسلة. نفس عامل الإنشاء [ -> ]
. يجب أن تتناوب المفاتيح والقيم مع بعضها البعض.
associate('fruit', 'apple', 'vegetable', 'carrot' )=> ['fruit' -> 'apple', 'vegetable' -> 'carrot']
at
at(<value1> : array/map, <value2> : integer/key type) => array
البحث عن العنصر في فهرس صفيف. الفهرس بادئ من 1. ينتج عن فهرس خارج الحدود قيمة خالية. البحث عن قيمة في مخطط تم منحه مفتاحاً. إذا لم يتم العثور على المفتاح، فإنه يرجع قيمة خالية.
at(['apples', 'pears'], 1) => 'apples'
at(['fruit' -> 'apples', 'vegetable' -> 'carrot'], 'fruit') => 'apples'
atan
atan(<value1> : number) => double
تحسب قيمة المماس المعكوسة.
atan(0) -> 0.0
atan2
atan2(<value1> : number, <value2> : number) => double
إرجاع الزاوية بالتقدير الدائري بين المحور السيني الموجب لمستوى والنقطة المعطاة بالإحداثيات.
atan2(0, 0) -> 0.0
avg
avg(<value1> : number) => number
الحصول على متوسط قيم عمود.
avg(sales)
avgIf
avgIf(<value1> : boolean, <value2> : number) => number
استناداً إلى أحد المعايير، يحصل على متوسط قيم العمود.
avgIf(region == 'West', sales)
مضمن
between
between(<value1> : any, <value2> : any, <value3> : any) => boolean
التحقق مما إذا كانت القيمة الأولى تقع بين قيمتين أخريين بشكلٍ شامل. يمكن مقارنة القيم الرقمية والسلسلة والتاريخ والوقت
between(10, 5, 24)
true
between(currentDate(), currentDate() + 10, currentDate() + 20)
false
bitwiseAnd
bitwiseAnd(<value1> : integral, <value2> : integral) => integral
معالجة البت وعامل التشغيل عبر أنواع متكاملة. مثل & عامل التشغيل
bitwiseAnd(0xf4, 0xef)
0xe4
(0xf4 & 0xef)
0xe4
bitwiseOr
bitwiseOr(<value1> : integral, <value2> : integral) => integral
معالجة البت أو عامل التشغيل عبر أنواع متكاملة. مثل | المشغل
bitwiseOr(0xf4, 0xef)
0xff
(0xf4 | 0xef)
0xff
bitwiseXor
bitwiseXor(<value1> : any, <value2> : any) => any
معالجة البت أو عامل التشغيل عبر أنواع متكاملة. مثل | المشغل
bitwiseXor(0xf4, 0xef)
0x1b
(0xf4 ^ 0xef)
0x1b
(true ^ false)
true
(true ^ true)
false
blake2b
blake2b(<value1> : integer, <value2> : any, ...) => string
حساب ملخص Blake2 لمجموعة من الأعمدة من أنواع البيانات الأولية المختلفة نظرا لطول البت، والتي يمكن أن تكون فقط مضاعفات من 8 بين 8 و512. يمكن استخدامه لحساب بصمة صف
blake2b(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4'))
'c9521a5080d8da30dffb430c50ce253c345cc4c4effc315dab2162dac974711d'
blake2bBinary
blake2bBinary(<value1> : integer, <value2> : any, ...) => binary
حساب ملخص Blake2 لمجموعة من الأعمدة من أنواع البيانات الأولية المختلفة نظرا لطول البت، والتي يمكن أن تكون فقط مضاعفات من 8 بين 8 و512. يمكن استخدامه لحساب بصمة صف
blake2bBinary(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4'))
unHex('c9521a5080d8da30dffb430c50ce253c345cc4c4effc315dab2162dac974711d')
byItem
byItem(<parent column> : any, <column name> : string) => any
ابحث عن عنصر فرعي داخل بنية أو مجموعة بنى. إذا كان هناك العديد من حالات التطابق، يتم إرجاع التطابق الأول. إذا لم يكن هناك تطابق، فيتم إرجاع قيمة NULL. يجب تحويل القيمة التي تم إرجاعها بواسطة أحد إجراءات تحويل النوع (؟ التاريخ، ؟ السلسلة ...). ما عليك سوى عنوان أسماء الأعمدة المعروفة في وقت التصميم باسمها. المدخلات المحسوبة غير مدعومة ولكن يمكنك استخدام بدائل المعلمات.
byItem( byName('customer'), 'orderItems') ? (itemName as string, itemQty as integer)
byItem( byItem( byName('customer'), 'orderItems'), 'itemName') ? string
byName
byName(<column name> : string, [<stream name> : string]) => any
تحديد قيمة العمود حسب الاسم في التدفق. يمكنك تمرير اسم تدفق اختياري كوسيطة ثانية. إذا كان هناك العديد من حالات التطابق، يتم إرجاع التطابق الأول. إذا لم يكن هناك تطابق، فيتم إرجاع قيمة NULL. يجب تحويل القيمة التي تم إرجاعها بواسطة إحدى دالات تحويل النوع (TO_DATE، TO_STRING ...). ما عليك سوى عنوان أسماء الأعمدة المعروفة في وقت التصميم باسمها. المدخلات المحسوبة غير مدعومة ولكن يمكنك استخدام بدائل المعلمات.
toString(byName('parent'))
toLong(byName('income'))
toBoolean(byName('foster'))
toLong(byName($debtCol))
toString(byName('Bogus Column'))
toString(byName('Bogus Column', 'DeriveStream'))
byNames
byNames(<column names> : array, [<stream name> : string]) => any
تحديد صفيف أعمدة حسب الاسم في التدفق. يمكنك تمرير اسم تدفق اختياري كوسيطة ثانية. إذا كان هناك العديد من حالات التطابق، يتم إرجاع التطابق الأول. إذا لم تكن هناك حالات تطابق لعمود، فسيكون الناتج بالكامل قيمة NULL. تتطلب القيمة التي تم إرجاعها دالة تحويل نوع (toDate، toString، ...). ما عليك سوى عنوان أسماء الأعمدة المعروفة في وقت التصميم باسمها. المدخلات المحسوبة غير مدعومة ولكن يمكنك استخدام بدائل المعلمات.
toString(byNames(['parent', 'child']))
byNames(['parent']) ? string
toLong(byNames(['income']))
byNames(['income']) ? long
toBoolean(byNames(['foster']))
toLong(byNames($debtCols))
toString(byNames(['a Column']))
toString(byNames(['a Column'], 'DeriveStream'))
byNames(['orderItem']) ? (itemName as string, itemQty as integer)
byOrigin
byOrigin(<column name> : string, [<origin stream name> : string]) => any
تحديد قيمة العمود حسب الاسم في تدفق الأصل. الوسيطة الثانية هي اسم تدفق الأصل. إذا كان هناك العديد من حالات التطابق، يتم إرجاع التطابق الأول. إذا لم يكن هناك تطابق، فيتم إرجاع قيمة NULL. يجب تحويل القيمة التي تم إرجاعها بواسطة إحدى دالات تحويل النوع (TO_DATE، TO_STRING ...). ما عليك سوى عنوان أسماء الأعمدة المعروفة في وقت التصميم باسمها. المدخلات المحسوبة غير مدعومة ولكن يمكنك استخدام بدائل المعلمات.
toString(byOrigin('ancestor', 'ancestorStream'))
byOrigins
byOrigins(<column names> : array, [<origin stream name> : string]) => any
تحديد صفيف أعمدة حسب الاسم في التدفق. الوسيطة الثانية هي الدفق الذي نشأت منه. إذا كان هناك العديد من حالات التطابق، يتم إرجاع التطابق الأول. إذا لم يكن هناك تطابق، فيتم إرجاع قيمة NULL. يجب تحويل القيمة التي تم إرجاعها بواسطة إحدى دالات تحويل النوع (TO_DATE، TO_STRING ...). ما عليك سوى عنوان أسماء الأعمدة المعروفة في وقت التصميم باسمها. المدخلات المحسوبة غير مدعومة ولكن يمكنك استخدام بدائل المعلمات.
toString(byOrigins(['ancestor1', 'ancestor2'], 'ancestorStream'))
byPath
byPath(<value1> : string, [<streamName> : string]) => any
البحث عن مسار هرمي بالاسم في الدفق. يمكنك تمرير اسم تدفق اختياري كوسيطة ثانية. إذا لم يتم العثور على مثل هذا المسار، فسيتم إرجاعه خالياً. يجب معالجة أسماء/مسارات الأعمدة المعروفة في وقت التصميم فقط من خلال الاسم أو مسار التدوين النقطي. المدخلات المحسوبة غير مدعومة ولكن يمكنك استخدام بدائل المعلمات.
byPath('grandpa.parent.child') => column
byPosition
byPosition(<position> : integer) => any
تحديد قيمة عمود حسب موضعها النسبي (يستند إلى 1) في الدفق. إذا كان الموضع خارج الحدود، فإنه يُرجع قيمة NULL. يجب تحويل القيمة التي تم إرجاعها بواسطة إحدى دالات تحويل النوع (TO_DATE، TO_STRING ...). المدخلات المحسوبة غير مدعومة ولكن يمكنك استخدام استبدال المعلمات.
toString(byPosition(1))
toDecimal(byPosition(2), 10, 2)
toBoolean(byName(4))
toString(byName($colName))
toString(byPosition(1234))
C
case
case(<condition> : boolean, <true_expression> : any, <false_expression> : any, ...) => any
بناءً على الشروط المتناوبة، يتم تطبيق قيمة واحدة أو أخرى. إذا كان عدد المدخلات زوجياً، فسيتم تعيين الآخر افتراضياً على NULL للشرط الأخير.
case(10 + 20 == 30, 'dumbo', 'gumbo') -> 'dumbo'
case(10 + 20 == 25, 'bojjus', 'do' < 'go', 'gunchus') -> 'gunchus'
isNull(case(10 + 20 == 25, 'bojjus', 'do' > 'go', 'gunchus')) -> true
case(10 + 20 == 25, 'bojjus', 'do' > 'go', 'gunchus', 'dumbo') -> 'dumbo'
cbrt
cbrt(<value1> : number) => double
حساب الجذر التكعيبي لرقم.
cbrt(8) -> 2.0
ceil
ceil(<value1> : number) => number
إرجاع أصغر عدد صحيح وليس أصغر من الرقم.
ceil(-0.1) -> 0
char
char(<Input> : number) => string
إرجاع الحرف ascii الذي يمثله رقم الإدخال. إذا كان الرقم أكبر من 256، تكون النتيجة مكافئة ل char(number ٪ 256)
char(65) -> 'A'
char(97) -> 'a'
coalesce
coalesce(<value1> : any, ...) => any
إرجاع القيمة الأولى غير الفارغة من مجموعة إدخالات. يجب أن تكون جميع الإدخالات من نفس النوع.
coalesce(10, 20) -> 10
coalesce(toString(null), toString(null), 'dumbo', 'bo', 'go') -> 'dumbo'
collect
collect(<value1> : any) => array
تجميع جميع قيم التعبير في المجموعة المجمعة في صفيف. يمكن تجميع الهياكل وتحويلها إلى هياكل بديلة أثناء هذه العملية. عدد العناصر يساوي عدد الصفوف في تلك المجموعة ويمكن أن يحتوي على قيم خالية. يجب أن يكون عدد العناصر المجمعة صغيراً.
collect(salesPerson)
collect(firstName + lastName))
collect(@(name = salesPerson, sales = salesAmount) )
collectUnique
collectUnique(<value1> : any) => array
تجميع جميع قيم التعبير في المجموعة المجمعة في صفيف فريد. يمكن تجميع الهياكل وتحويلها إلى هياكل بديلة أثناء هذه العملية. عدد العناصر يساوي عدد الصفوف في تلك المجموعة ويمكن أن يحتوي على قيم خالية. يجب أن يكون عدد العناصر المجمعة صغيراً.
collect(salesPerson)
collect(firstName + lastName))
collect(@(name = salesPerson, sales = salesAmount) )
columnNames
columnNames(<value1>
columnNames( : string, i><value1> : boolean) => array
الحصول على أسماء جميع أعمدة الإخراج الخاصة بالتدفق. يمكنك تمرير اسم دفق البيانات اختياري باعتباره الوسيطة الأولى. الوسيطة الثانية اختيارية أيضاً، حيث تكون القيمة false هي القيمة الافتراضية. إذا قمت بتعيين الوسيطة الثانية إلى true()
، فإن Data Factory ترجع الأعمدة التي تم انجرافها عبر انحراف المخطط فقط.
columnNames()
columnNames('DeriveStream')
columnNames('DeriveStream', true())
columnNames('', true())
columns
columns([<stream name> : string]) => any
الحصول على قيم جميع أعمدة الإخراج الخاصة بالتدفق. يمكنك تمرير اسم تدفق اختياري كوسيطة ثانية.
columns()
columns('DeriveStream')
compare
compare(<value1> : any, <value2> : any) => integer
مقارنة قيمتين من نفس النوع. لعرض عدد صحيح سالب إذا كانت القيمة 1 < القيمة 2، 0 إذا كانت القيمة 1 == القيمة 2، القيمة الموجبة إذا كانت القيمة 1 > القيمة 2.
(compare(12, 24) < 1) -> true
(compare('dumbo', 'dum') > 0) -> true
concat
concat(<this> : string, <that> : string, ...) => string
ربط عدد متغير من السلاسل معاً. نفس عامل التشغيل + مع السلاسل.
concat('dataflow', 'is', 'awesome') -> 'dataflowisawesome'
'dataflow' + 'is' + 'awesome' -> 'dataflowisawesome'
isNull('sql' + null) -> true
concatWS
concatWS(<separator> : string, <this> : string, <that> : string, ...) => string
ربط عدد متغير من السلاسل مع فاصل. المعلمة الأولى هي الفاصل.
concatWS(' ', 'dataflow', 'is', 'awesome') -> 'dataflow is awesome'
isNull(concatWS(null, 'dataflow', 'is', 'awesome')) -> true
concatWS(' is ', 'dataflow', 'awesome') -> 'dataflow is awesome'
contains
contains(<value1> : array, <value2> : unaryfunction) => boolean
إرجاع صحيح إذا تم تقييم أي عنصر في الصفيف المقدم على أنه صحيح في المسند المقدم. يحتوي على توقع مرجع إلى عنصر واحد في دالة التقييم مثل #item.
contains([1, 2, 3, 4], #item == 3) -> true
contains([1, 2, 3, 4], #item > 5) -> false
cos
cos(<value1> : number) => double
حساب قيمة جيب التمام.
cos(10) -> -0.8390715290764524
cosh
cosh(<value1> : number) => double
حساب جيب الزاوية الزائدي لقيمة.
cosh(0) -> 1.0
count
count([<value1> : any]) => long
الحصول على العدد الإجمالي للقيم. إذا تم تحديد عمود اختياري واحد أو أكثر، فإنه يتجاهل القيم NULL في العدد.
count(custId)
count(custId, custName)
count()
count(iif(isNull(custId), 1, NULL))
countAll
countAll([<value1> : any]) => long
الحصول على العدد الإجمالي للقيم بما في ذلك القيم الخالية.
countAll(custId)
countAll()
countDistinct
countDistinct(<value1> : any, [<value2> : any], ...) => long
الحصول على العدد الإجمالي للقيم المميزة لمجموعة من الأعمدة.
countDistinct(custId, custName)
countAllDistinct
countAllDistinct(<value1> : any, [<value2> : any], ...) => long
الحصول على العدد الإجمالي للقيم المميزة لمجموعة من الأعمدة بما في ذلك القيم الخالية.
countAllDistinct(custId, custName)
countIf
countIf(<value1> : boolean, [<value2> : any]) => long
بناءً على معيار، يتم الحصول على العدد الإجمالي للقيم. إذا تم تحديد العمود الاختياري، فإنه يتجاهل القيم الخالية في العدد.
countIf(state == 'CA' && commission < 10000, name)
covariancePopulation
covariancePopulation(<value1> : number, <value2> : number) => double
الحصول على التباين المشترك للمحتوى بين عمودين.
covariancePopulation(sales, profit)
covariancePopulationIf
covariancePopulationIf(<value1> : boolean, <value2> : number, <value3> : number) => double
استناداً إلى أحد المعايير، يتم الحصول على التباين المشترك لمحتوى العمودين.
covariancePopulationIf(region == 'West', sales)
covarianceSample
covarianceSample(<value1> : number, <value2> : number) => double
الحصول على نموذج التباين المشترك لعمودين.
covarianceSample(sales, profit)
covarianceSampleIf
covarianceSampleIf(<value1> : boolean, <value2> : number, <value3> : number) => double
استناداً إلى أحد المعايير، يتم الحصول على نموذج التباين المشترك لعمودين.
covarianceSampleIf(region == 'West', sales, profit)
crc32
crc32(<value1> : any, ...) => long
لحساب تجزئة CRC32 لمجموعة من الأعمدة لأنواع البيانات الأولية المتغيرة مع إعطاء طول بت، والذي يمكن أن يكون فقط من القيم 0 (256)، 224، 256، 384، 512. يمكن استخدامه لحساب بصمة صف.
crc32(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> 3630253689L
cumeDist
cumeDist() => integer
تحسب الدالة CumeDist موضع القيمة بالنسبة إلى جميع القيم الموجودة في القسم. والنتيجة هي عدد الصفوف السابقة أو المساوية للصف الحالي في ترتيب القسم مقسوماً على العدد الإجمالي للصفوف في جزء النافذة. يتم تقييم أي قيم ربط في الترتيب إلى نفس الموضع.
cumeDist()
currentDate
currentDate([<value1> : string]) => date
الحصول على التاريخ الحالي لبدء تشغيل هذه الوظيفة. يمكنك تمرير منطقة زمنية اختيارية في شكل "GMT" و"PST" و"UTC" و"America/Cayman". يتم استخدام المنطقة الزمنية المحلية لمركز/منطقة مصنع البيانات كإعداد افتراضي. راجع فئة SimpleDateFormat
Java للتعرف على التنسيقات المتاحة. https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.
currentDate() == toDate('2250-12-31') -> false
currentDate('PST') == toDate('2250-12-31') -> false
currentDate('America/New_York') == toDate('2250-12-31') -> false
currentTimestamp
currentTimestamp() => timestamp
الحصول على الطابع الزمني الحالي عند بدء العمل بالمنطقة الزمنية المحلية.
currentTimestamp() == toTimestamp('2250-12-31 12:12:12') -> false
currentUTC
currentUTC([<value1> : string]) => timestamp
الحصول على الطابع الزمني الحالي كـ UTC. إذا كنت تريد تفسير وقتك الحالي في منطقة زمنية مختلفة عن المنطقة الزمنية لمجموعتك، فيمكنك تمرير منطقة زمنية اختيارية على شكل "GMT"، و"PST" و"UTC" و"America/Cayman". يتم تعيينه افتراضيا إلى المنطقة الزمنية الحالية. راجع فئة SimpleDateFormat
Java للتعرف على التنسيقات المتاحة. https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html. لتحويل التوقيت العالمي المنسق إلى منطقة زمنية مختلفة، استخدم fromUTC()
.
currentUTC() == toTimestamp('2050-12-12 19:18:12') -> false
currentUTC() != toTimestamp('2050-12-12 19:18:12') -> true
fromUTC(currentUTC(), 'Asia/Seoul') != toTimestamp('2050-12-12 19:18:12') -> true
D
dayOfMonth
dayOfMonth(<value1> : datetime) => integer
الحصول على يوم من الشهر مع تحديد التاريخ.
dayOfMonth(toDate('2018-06-08')) -> 8
dayOfWeek
dayOfWeek(<value1> : datetime) => integer
الحصول على يوم من الأسبوع مع تحديد تاريخ. 1 - الأحد، 2 - الاثنين ...، 7 - السبت.
dayOfWeek(toDate('2018-06-08')) -> 6
dayOfYear
dayOfYear(<value1> : datetime) => integer
الحصول على يوم من السنة مع تحديد التاريخ.
dayOfYear(toDate('2016-04-09')) -> 100
days
days(<value1> : integer) => long
المدة بالملّي ثانية لعدد الأيام.
days(2) -> 172800000L
decode
decode(<Input> : any, <Charset> : string) => binary
فك ترميز بيانات الإدخال المشفرة في سلسلة استنادا إلى مجموعة الأحرف المحددة. يمكن استخدام وسيطة ثانية (اختيارية) لتحديد مجموعة الأحرف التي يجب استخدامها - "US-ASCII" و"ISO-8859-1" و"UTF-8" (افتراضي) و"UTF-16BE" و"UTF-16LE" و"UTF-16"
decode(array(toByte(97),toByte(98),toByte(99)), 'US-ASCII') -> abc
degrees
degrees(<value1> : number) => double
تحويل التقدير الدائري إلى درجات.
degrees(3.141592653589793) -> 180
denseRank
denseRank() => integer
حساب رتبة قيمة في مجموعة من القيم المحددة في ترتيب الإطار حسب العبارة. والنتيجة هي واحد زائد عدد الصفوف السابقة أو مساوية للصف الحالي في ترتيب القسم. لا تنتج القيم فجوات في التسلسل. يعمل Dense Rank حتى عندما لا يتم فرز البيانات ويبحث عن التغيير في القيم.
denseRank()
distinct
distinct(<value1> : array) => array
إرجاع مجموعة مميزة من العناصر من صفيف.
distinct([10, 20, 30, 10]) => [10, 20, 30]
divide
divide(<value1> : any, <value2> : any) => any
تقسيم زوج من الأرقام. مثل عامل التشغيل /
.
divide(20, 10) -> 2
20 / 10 -> 2
dropLeft
dropLeft(<value1> : string, <value2> : integer) => string
إزالة العديد من الأحرف من يسار السلسلة. إذا تجاوز الإفلات المطلوب طول السلسلة، يتم إرجاع سلسلة فارغة.
- dropLeft('bojjus', 2) => 'jjus'
- dropLeft('cake', 10) => ''
dropRight
dropRight(<value1> : string, <value2> : integer) => string
إزالة العديد من الأحرف من يمين السلسلة. إذا تجاوز الإفلات المطلوب طول السلسلة، يتم إرجاع سلسلة فارغة.
- dropRight('bojjus', 2) => 'bojj'
- dropRight('cake', 10) => ''
E
encode
encode(<Input> : string, <Charset> : string) => binary
ترميز بيانات سلسلة الإدخال إلى ثنائي استنادا إلى مجموعة charset. يمكن استخدام وسيطة ثانية (اختيارية) لتحديد مجموعة الأحرف التي يجب استخدامها - "US-ASCII" و"ISO-8859-1" و"UTF-8" (افتراضي) و"UTF-16BE" و"UTF-16LE" و"UTF-16"
encode('abc', 'US-ASCII') -> array(toByte(97),toByte(98),toByte(99))
endsWith
endsWith(<string> : string, <substring to check> : string) => boolean
التحقق مما إذا كانت السلسلة تنتهي بالسلسلة المرفقة.
endsWith('dumbo', 'mbo') -> true
equals
equals(<value1> : any, <value2> : any) => boolean
المقارنة تساوي عامل التشغيل. مثل == عامل التشغيل.
equals(12, 24) -> false
12 == 24 -> false
'bad' == 'bad' -> true
isNull('good' == toString(null)) -> true
isNull(null == null) -> true
equalsIgnoreCase
equalsIgnoreCase(<value1> : string, <value2> : string) => boolean
المقارنة تساوي تجاهل العامل للحالة. مثل عامل التشغيل <=>.
'abc'<=>'Abc' -> true
equalsIgnoreCase('abc', 'Abc') -> true
escape
escape(<string_to_escape> : string, <format> : string) => string
تخطي سلسلة وفقاً لتنسيق. القيم الحرفية للتنسيق المقبول هي "json" و"xml" و"ecmascript" و"html" و"java".
except
except(<value1> : array, <value2> : array) => array
إرجاع مجموعة فرق من صفيف واحد من آخر إسقاط التكرارات.
except([10, 20, 30], [20, 40]) => [10, 30]
expr
expr(<expr> : string) => any
ينتج عنه تعبير من سلسلة. هذا هو نفس كتابة هذا التعبير في شكل غير حرفي. يمكن استخدام هذا لتمرير المعلمات كتمثيلات سلسلة.
- expr('price * discount') => any
F
factorial
factorial(<value1> : number) => long
حساب مضروب الرقم.
factorial(5) -> 120
false
false() => boolean
إرجاع قيمة خاطئة دائماً. استخدم الوظيفة syntax(false())
إذا كان هناك عمود يسمى "false".
(10 + 20 > 30) -> false
(10 + 20 > 30) -> false()
filter
filter(<value1> : array, <value2> : unaryfunction) => array
تصفية العناصر خارج الصفيف التي لا تتوافق مع المسند المقدم. يتوقع عامل التصفية مرجع إلى عنصر واحد في دالة التقييم مثل #item.
filter([1, 2, 3, 4], #item > 2) -> [3, 4]
filter(['a', 'b', 'c', 'd'], #item == 'a' || #item == 'b') -> ['a', 'b']
find
find(<value1> : array, <value2> : unaryfunction) => any
ابحث عن العنصر الأول من الصفيف المطابق للشرط. تأخذ وظيفة عامل التصفية حيث يمكنك معالجة العنصر في الصفيف مثل #item. بالنسبة للمخططات المتداخلة بعمق، يمكنك الرجوع إلى المخططات الأصلية باستخدام علامة #item_n(#item_1, #item_2...).
find([10, 20, 30], #item > 10) -> 20
find(['azure', 'data', 'factory'], length(#item) > 4) -> 'azure'
find([ @( name = 'Daniel', types = [ @(mood = 'jovial', behavior = 'terrific'), @(mood = 'grumpy', behavior = 'bad') ] ), @( name = 'Mark', types = [ @(mood = 'happy', behavior = 'awesome'), @(mood = 'calm', behavior = 'reclusive') ] ) ], contains(#item.types, #item.mood=='happy') /*Filter out the happy kid*/ )
@( name = 'Mark', types = [ @(mood = 'happy', behavior = 'awesome'), @(mood = 'calm', behavior = 'reclusive') ] )
first
first(<value1> : any, [<value2> : boolean]) => any
الحصول على القيمة الأولى لمجموعة الأعمدة. إذا تم حذف المعلمة الثانية ignoreNulls، يفترض Data Factory خطأ.
first(sales)
first(sales, false)
flatten
flatten(<array> : array, <value2> : array ..., <value2> : boolean) => array
تسطيح الصفيف أو الصفائف في صفيف واحد. يتم إرجاع صفائف العناصر الذرية دون تغيير. الوسيطة الأخيرة اختيارية ويتم تعيينها افتراضياً على false إلى flatten بشكل متكرر أكثر من مستوى واحد عميق.
flatten([['bojjus', 'girl'], ['gunchus', 'boy']]) => ['bojjus', 'girl', 'gunchus', 'boy']
flatten([[['bojjus', 'gunchus']]] , true) => ['bojjus', 'gunchus']
floor
floor(<value1> : number) => number
إرجاع أكبر عدد صحيح لا يزيد عن الرقم.
floor(-0.1) -> -1
fromBase64
fromBase64(<value1> : string, <encoding type> : string) => string
فك تشفير السلسلة المعطاة بترميز base64. يمكنك اختيارياً تمرير نوع الترميز.
fromBase64('Z3VuY2h1cw==') -> 'gunchus'
fromBase64('SGVsbG8gV29ybGQ=', 'Windows-1252') -> 'Hello World'
fromUTC
fromUTC(<value1> : timestamp, [<value2> : string]) => timestamp
التحول إلى الطابع الزمني من UTC. يمكنك اختيارياً تمرير المنطقة الزمنية في شكل "GMT" و"PST" و"UTC" و"America/Cayman". يتم تعيينه افتراضيا إلى المنطقة الزمنية الحالية. راجع فئة SimpleDateFormat
Java للتعرف على التنسيقات المتاحة. https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.
fromUTC(currentTimestamp()) == toTimestamp('2050-12-12 19:18:12') -> false
fromUTC(currentTimestamp(), 'Asia/Seoul') != toTimestamp('2050-12-12 19:18:12') -> true
G
greater
greater(<value1> : any, <value2> : any) => boolean
مقارنة عامل تشغيل الأكبر. نفس عامل التشغيل >.
greater(12, 24) -> false
('dumbo' > 'dum') -> true
(toTimestamp('2019-02-05 08:21:34.890', 'yyyy-MM-dd HH:mm:ss.SSS') > toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS')) -> true
greaterOrEqual
greaterOrEqual(<value1> : any, <value2> : any) => boolean
مقارنة أكبر من أو يساوي عامل التشغيل. مثل عامل التشغيل >=.
greaterOrEqual(12, 12) -> true
('dumbo' >= 'dum') -> true
greatest
greatest(<value1> : any, ...) => any
إرجاع القيمة الأكبر بين قائمة القيم كمدخلات تتخطى القيم الخالية. إرجاع null إذا كانت جميع الإدخالات فارغة.
greatest(10, 30, 15, 20) -> 30
greatest(10, toInteger(null), 20) -> 20
greatest(toDate('2010-12-12'), toDate('2011-12-12'), toDate('2000-12-12')) -> toDate('2011-12-12')
greatest(toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS'), toTimestamp('2019-02-05 08:21:34.890', 'yyyy-MM-dd HH:mm:ss.SSS')) -> toTimestamp('2019-02-05 08:21:34.890', 'yyyy-MM-dd HH:mm:ss.SSS')
H
hasColumn
hasColumn(<column name> : string, [<stream name> : string]) => boolean
التحقق من قيمة عمود حسب الاسم في التدفق. يمكنك تمرير اسم تدفق اختياري كوسيطة ثانية. ما عليك سوى عنوان أسماء الأعمدة المعروفة في وقت التصميم باسمها. المدخلات المحسوبة غير مدعومة ولكن يمكنك استخدام بدائل المعلمات.
hasColumn('parent')
hasError
hasError([<value1> : string]) => boolean
التحقق من وضع علامة خطأ على الأصل ذي المعرف المتوفر.
الأمثلة
hasError('assert1')
hasError('assert2')
hasPath
hasPath(<value1> : string, [<streamName> : string]) => boolean
التحقق من وجود مسار هرمي معين بالاسم في الدفق. يمكنك تمرير اسم تدفق اختياري كوسيطة ثانية. يجب معالجة أسماء/مسارات الأعمدة المعروفة في وقت التصميم فقط من خلال الاسم أو مسار التدوين النقطي. المدخلات المحسوبة غير مدعومة ولكن يمكنك استخدام بدائل المعلمات.
hasPath('grandpa.parent.child') => boolean
hex
hex(<value1>: binary) => string
إرجاع تمثيل سلسلة سداسية عشرية لقيمة ثنائية
hex(toBinary([toByte(0x1f), toByte(0xad), toByte(0xbe)])) -> '1fadbe'
hour
hour(<value1> : timestamp, [<value2> : string]) => integer
الحصول على قيمة الساعة للطابع الزمني. يمكنك تمرير منطقة زمنية اختيارية في شكل "GMT" و"PST" و"UTC" و"America/Cayman". يتم استخدام المنطقة الزمنية المحلية على أنها المنطقة الزمنية الافتراضية. راجع فئة SimpleDateFormat
Java للتعرف على التنسيقات المتاحة. https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.
hour(toTimestamp('2009-07-30 12:58:59')) -> 12
hour(toTimestamp('2009-07-30 12:58:59'), 'PST') -> 12
hours
hours(<value1> : integer) => long
المدة بالملّي ثانية لعدد الساعات.
hours(2) -> 7200000L
I
iif
iif(<condition> : boolean, <true_expression> : any, [<false_expression> : any]) => any
بناءً على شرط يتم تطبيق قيمة أو أخرى. إذا كانت القيمة الأخرى غير محددة، تعتبر القيمة NULL. يجب أن تكون كلتا القيمتين متوافقتين (رقمية، سلسلة...).
iif(10 + 20 == 30, 'dumbo', 'gumbo') -> 'dumbo'
iif(10 > 30, 'dumbo', 'gumbo') -> 'gumbo'
iif(month(toDate('2018-12-01')) == 12, 345.12, 102.67) -> 345.12
iifNull
iifNull(<value1> : any, [<value2> : any], ...) => any
عند وجود مدخلين أو أكثر، يتم إرجاع العنصر الأول غير الفارغ. هذه الدالة تعادل الاندماج.
iifNull(10, 20) -> 10
iifNull(null, 20, 40) -> 20
iifNull('azure', 'data', 'factory') -> 'azure'
iifNull(null, 'data', 'factory') -> 'data'
in
in(<array of items> : array, <item to find> : any) => boolean
التحقق من وجود عنصر في الصفيف.
in([10, 20, 30], 10) -> true
in(['good', 'kid'], 'bad') -> false
initCap
initCap(<value1> : string) => string
تحويل الحرف الأول من كل كلمة إلى أحرف كبيرة. يتم تحديد الكلمات على أنها مفصولة بمسافة بيضاء.
initCap('cool iceCREAM') -> 'Cool Icecream'
instr
instr(<string> : string, <substring to find> : string) => integer
البحث عن موضع السلسلة الفرعية (المستندة إلى 1) ضمن سلسلة. يتم إرجاع 0 إذا لم يتم العثور عليه.
instr('dumbo', 'mbo') -> 3
instr('microsoft', 'o') -> 5
instr('good', 'bad') -> 0
intersect
intersect(<value1> : array, <value2> : array) => array
إرجاع مجموعة تقاطع من العناصر المميزة من صفيفين.
intersect([10, 20, 30], [20, 40]) => [20]
isBitSet
isBitSet (<value1> : array, <value2>:integer ) => boolean
التحقق من تعيين موضع بت في مجموعة البت هذه
isBitSet(toBitSet([10, 32, 98]), 10) => true
isBoolean
isBoolean(<value1>: string) => boolean
التحقق مما إذا كانت قيمة السلسلة قيمة منطقية وفقا لقواعد toBoolean()
isBoolean('true') -> true
isBoolean('no') -> true
isBoolean('microsoft') -> false
isByte
isByte(<value1> : string) => boolean
التحقق مما إذا كانت قيمة السلسلة هي قيمة بايت نظراً لتنسيق اختياري وفقاً لقواعد toByte()
isByte('123') -> true
isByte('chocolate') -> false
isDate
isDate (<value1> : string, [<format>: string]) => boolean
التحقق مما إذا كانت سلسلة تاريخ الإدخال عبارة عن تاريخ باستخدام تنسيق تاريخ إدخال اختياري. راجع تنسيق SimpleDateFormat الخاص بـ Java لمعرفة التنسيقات المتاحة. إذا تم حذف تنسيق تاريخ الإدخال، فإن التنسيق الافتراضي هو yyyy-[M]M-[d]d
. التنسيقات المقبولة هي [ yyyy, yyyy-[M]M, yyyy-[M]M-[d]d, yyyy-[M]M-[d]dT* ]
isDate('2012-8-18') -> true
isDate('12/18--234234' -> 'MM/dd/yyyy') -> false
isDecimal
isDecimal (<value1> : string) => boolean
التحقق مما إذا كانت قيمة السلسلة هي قيمة عشرية نظراً لتنسيق اختياري وفقاً لقواعد toDecimal()
isDecimal('123.45') -> true
isDecimal('12/12/2000') -> false
isDelete
isDelete([<value1> : integer]) => boolean
التحقق مما إذا كان الصف محدداً للحذف. بالنسبة للتحويلات التي تأخذ أكثر من دفق إدخال واحد، يمكنك تمرير فهرس الدفق (المستند إلى 1). يجب أن يكون مؤشر التدفق إما 1 أو 2 والقيمة الافتراضية هي 1.
isDelete()
isDelete(1)
isDistinct
isDistinct(<value1> : any , <value1> : any) => boolean
اكتشاف ما إذا كان عموداً أو مجموعة من الأعمدة مميزة. لا تعد قيمة خالية كقيمة مميزة
isDistinct(custId, custName) => boolean
isDouble
isDouble (<value1> : string, [<format>: string]) => boolean
للتحقق مما إذا كانت قيمة السلسلة عبارة عن قيمة مزدوجة نظراً لتنسيق اختياري وفقاً لقواعد toDouble()
isDouble('123') -> true
isDouble('$123.45' -> '$###.00') -> true
isDouble('icecream') -> false
isError
isError([<value1> : integer]) => boolean
التحقق مما إذا تم تحديد الصف على أنه خطأ. بالنسبة للتحويلات التي تأخذ أكثر من دفق إدخال واحد، يمكنك تمرير فهرس الدفق (المستند إلى 1). يجب أن يكون مؤشر التدفق إما 1 أو 2 والقيمة الافتراضية هي 1.
isError()
isError(1)
isFloat
isFloat (<value1> : string, [<format>: string]) => boolean
للتحقق مما إذا كانت قيمة السلسلة هي قيمة حرة نظراً لتنسيق اختياري وفقاً لقواعد toFloat()
isFloat('123') -> true
isFloat('$123.45' -> '$###.00') -> true
isFloat('icecream') -> false
isIgnore
isIgnore([<value1> : integer]) => boolean
التحقق مما إذا كان الصف محدداً ليتم تجاهله. بالنسبة للتحويلات التي تأخذ أكثر من دفق إدخال واحد، يمكنك تمرير فهرس الدفق (المستند إلى 1). يجب أن يكون مؤشر التدفق إما 1 أو 2 والقيمة الافتراضية هي 1.
isIgnore()
isIgnore(1)
isInsert
isInsert([<value1> : integer]) => boolean
التحقق مما إذا كان الصف محدداً للإدراج. بالنسبة للتحويلات التي تأخذ أكثر من دفق إدخال واحد، يمكنك تمرير فهرس الدفق (المستند إلى 1). يجب أن يكون مؤشر التدفق إما 1 أو 2 والقيمة الافتراضية هي 1.
isInsert()
isInsert(1)
isInteger
isInteger (<value1> : string, [<format>: string]) => boolean
للتحقق مما إذا كانت قيمة السلسلة عبارة عن قيمة عدد صحيح نظراً لتنسيق اختياري وفقاً لقواعد toInteger()
isInteger('123') -> true
isInteger('$123' -> '$###') -> true
isInteger('microsoft') -> false
isLong
isLong (<value1> : string, [<format>: string]) => boolean
للتحقق مما إذا كانت قيمة السلسلة قيمة طويلة بالنظر إلى تنسيق اختياري وفقاً لقواعد toLong()
isLong('123') -> true
isLong('$123' -> '$###') -> true
isLong('gunchus') -> false
isMatch
isMatch([<value1> : integer]) => boolean
التحقق مما إذا كان الصف متطابقاً عند البحث. بالنسبة للتحويلات التي تأخذ أكثر من دفق إدخال واحد، يمكنك تمرير فهرس الدفق (المستند إلى 1). يجب أن يكون مؤشر التدفق إما 1 أو 2 والقيمة الافتراضية هي 1.
isMatch()
isMatch(1)
isNan
isNan (<value1> : integral) => boolean
تحقق مما إذا كان هذا ليس رقماً.
isNan(10.2) => false
isNull
isNull(<value1> : any) => boolean
التحقق مما إذا كانت القيمة فارغة.
isNull(NULL()) -> true
isNull('') -> false
isShort
isShort (<value1> : string, [<format>: string]) => boolean
التحقق مما إذا كانت قيمة السلسلة هي قيمة قصيرة نظراً لتنسيق اختياري وفقاً لقواعد toShort()
isShort('123') -> true
isShort('$123' -> '$###') -> true
isShort('microsoft') -> false
isTimestamp
isTimestamp (<value1> : string, [<format>: string]) => boolean
التحقق مما إذا كانت سلسلة تاريخ الإدخال عبارة عن طابع زمني باستخدام تنسيق طابع زمني اختياري للإدخال. راجع تنسيق SimpleDateFormat الخاص بـ Java لمعرفة التنسيقات المتاحة. إذا تم حذف الطابع الزمني، فسيتم استخدام النمط الافتراضي yyyy-[M]M-[d]d hh:mm:ss[.f...]
. يمكنك تمرير منطقة زمنية اختيارية في شكل "GMT" و"PST" و"UTC" و"America/Cayman". يدعم الطابع الزمني دقة تصل إلى ملّي ثانية بقيمة 999، ارجع إلى تنسيق SimpleDateFormat الخاص بـ Java للتعرف على التنسيقات المتاحة.
isTimestamp('2016-12-31 00:12:00') -> true
isTimestamp('2016-12-31T00:12:00' -> 'yyyy-MM-dd\\'T\\'HH:mm:ss' -> 'PST') -> true
isTimestamp('2012-8222.18') -> false
isUpdate
isUpdate([<value1> : integer]) => boolean
التحقق مما إذا كان الصف محدداً للتحديث. بالنسبة للتحويلات التي تأخذ أكثر من دفق إدخال واحد، يمكنك تمرير فهرس الدفق (المستند إلى 1). يجب أن يكون مؤشر التدفق إما 1 أو 2 والقيمة الافتراضية هي 1.
isUpdate()
isUpdate(1)
isUpsert
isUpsert([<value1> : integer]) => boolean
التحقق مما إذا كان الصف محدداً للإدراج. بالنسبة للتحويلات التي تأخذ أكثر من دفق إدخال واحد، يمكنك تمرير فهرس الدفق (المستند إلى 1). يجب أن يكون مؤشر التدفق إما 1 أو 2 والقيمة الافتراضية هي 1.
isUpsert()
isUpsert(1)
J
jaroWinkler
jaroWinkler(<value1> : string, <value2> : string) => double
الحصول على مسافة JaroWinkler بين سلسلتين.
jaroWinkler('frog', 'frog') => 1.0
أ
keyValues
keyValues(<value1> : array, <value2> : array) => map
إنشاء مخطط للمفتاح/القيم. المعلمة الأولى هي صفيف من المفاتيح والثانية هي صفيف القيم. يجب أن يكون طول الصفيفين متساوياً.
keyValues(['bojjus', 'appa'], ['gunchus', 'ammi']) => ['bojjus' -> 'gunchus', 'appa' -> 'ammi']
kurtosis
kurtosis(<value1> : number) => double
الحصول على تفرطح العمود.
kurtosis(sales)
kurtosisIf
kurtosisIf(<value1> : boolean, <value2> : number) => double
بناءً على المعايير، يتم الحصول على تفرطح العمود.
kurtosisIf(region == 'West', sales)
L
lag
lag(<value> : any, [<number of rows to look before> : number], [<default value> : any]) => any
الحصول على قيمة المعلمة الأولى التي تم تقييمها n من الصفوف قبل الصف الحالي. المعلمة الثانية هي عدد الصفوف التي يجب الرجوع إليها والقيمة الافتراضية هي 1. إذا لم يكن يوجد العديد من السجلات، يتم إرجاع قيمة خالية ما لم يتم تحديد قيمة افتراضية.
lag(amount, 2)
lag(amount, 2000, 100)
last
last(<value1> : any, [<value2> : boolean]) => any
الحصول على القيمة الأخيرة لمجموعة الأعمدة. إذا تم حذف المعلمة الثانية ignoreNulls، فسيتم افتراض أنها خاطئة.
last(sales)
last(sales, false)
lastDayOfMonth
lastDayOfMonth(<value1> : datetime) => date
الحصول على التاريخ الأخير من الشهر المحدد.
lastDayOfMonth(toDate('2009-01-12')) -> toDate('2009-01-31')
lead
lead(<value> : any, [<number of rows to look after> : number], [<default value> : any]) => any
الحصول على قيمة المعلمة الأولى التي تم تقييمها n من الصفوف بعد الصف الحالي. المعلمة الثانية هي عدد الصفوف التي يجب البحث عنها والقيمة الافتراضية هي 1. إذا لم يكن يوجد العديد من السجلات، يتم إرجاع قيمة خالية ما لم يتم تحديد قيمة افتراضية.
lead(amount, 2)
lead(amount, 2000, 100)
least
least(<value1> : any, ...) => any
مقارنة أكبر من أو يساوي عامل التشغيل. مثل عامل التشغيل <=.
least(10, 30, 15, 20) -> 10
least(toDate('2010-12-12'), toDate('2011-12-12'), toDate('2000-12-12')) -> toDate('2000-12-12')
left
left(<string to subset> : string, <number of characters> : integral) => string
استخراج سلسلة فرعية تبدأ في الفهرس 1 بعدد الأحرف. مثل BSTRING(str, 1, n).
left('bojjus', 2) -> 'bo'
left('bojjus', 20) -> 'bojjus'
length
length(<value1> : string) => integer
إرجاع طول السلسلة.
length('dumbo') -> 5
lesser
lesser(<value1> : any, <value2> : any) => boolean
مقارنة عامل تشغيل أقل. نفس عامل التشغيل <.
lesser(12, 24) -> true
('abcd' < 'abc') -> false
(toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS') < toTimestamp('2019-02-05 08:21:34.890', 'yyyy-MM-dd HH:mm:ss.SSS')) -> true
lesserOrEqual
lesserOrEqual(<value1> : any, <value2> : any) => boolean
مقارنة أكبر من أو يساوي عامل التشغيل. مثل عامل التشغيل <=.
lesserOrEqual(12, 12) -> true
('dumbo' <= 'dum') -> false
levenshtein
levenshtein(<from string> : string, <to string> : string) => integer
الحصول على مسافة levenshtein بين سلسلتين.
levenshtein('boys', 'girls') -> 4
like
like(<string> : string, <pattern match> : string) => boolean
النمط عبارة عن سلسلة تتم مطابقتها حرفياً. الاستثناءات هي الرموز الخاصة التالية: _ تطابق أي حرف واحد في الإدخال (على غرار. في posix
التعبيرات العادية) تتطابق النسبة المئوية مع صفر أو أكثر من الأحرف في الإدخال (على غرار .*
التعبيرات posix
العادية).
حرف الإلغاء هو ''. إذا كان حرف الإلغاء يسبق رمزاً خاصاً أو حرف إلغاء آخر، فستتم مطابقة الحرف التالي حرفياً. لا يجوز الهروب من أي حرف آخر.
like('icecream', 'ice%') -> true
locate
locate(<substring to find> : string, <string> : string, [<from index - 1-based> : integral]) => integer
البحث عن موضع (يستند 1) للسلسلة الفرعية داخل سلسلة تبدأ موضعا معينا. إذا تم حذف الموضع، فسيتم اعتباره من بداية السلسلة. يتم إرجاع 0 إذا لم يتم العثور عليه.
locate('mbo', 'dumbo') -> 3
locate('o', 'microsoft', 6) -> 7
locate('bad', 'good') -> 0
log
log(<value1> : number, [<value2> : number]) => double
حساب قيمة السجل. يمكن توفير قاعدة اختيارية أخرى رقم Euler إذا تم استخدامه.
log(100, 10) -> 2
log10
log10(<value1> : number) => double
حساب قيمة السجل استناداً إلى القاعدة 10.
log10(100) -> 2
lookup
lookup(key, key2, ...) => complex[]
البحث عن الصف الأول من المخزن المؤقت باستخدام مفاتيح المحددة التي تطابق المفاتيح من المخزن المؤقت.
cacheSink#lookup(movieId)
lower
lower(<value1> : string) => string
تصغير حروف السلسلة.
lower('GunChus') -> 'gunchus'
lpad
lpad(<string to pad> : string, <final padded length> : integral, <padding> : string) => string
تعبئة السلسلة من جهة اليسار من خلال ترك مساحة متوفرة حتى تصبح بطول معين. إذا كان الخيط يساوي الطول أو أكبر منه، فسيتم قصه وفقاً للطول.
lpad('dumbo', 10, '-') -> '-----dumbo'
lpad('dumbo', 4, '-') -> 'dumb'
ltrim
ltrim(<string to trim> : string, [<trim characters> : string]) => string
تقليص من جهة اليسار لسلسلة من الأحرف البادئة. إذا كانت المعلمة الثانية غير محددة، فإنها تقلص المسافة البيضاء. وإلا فإنه يقلص أي حرف محدد في المعلمة الثانية.
ltrim(' dumbo ') -> 'dumbo '
ltrim('!--!du!mbo!', '-!') -> 'du!mbo!'
M
map
map(<value1> : array, <value2> : unaryfunction) => any
تعيين كل عنصر من عناصر الصفيف إلى عنصر جديد باستخدام التعبير المقدم. يتوقع التعيين مرجع إلى عنصر واحد في دالة التعبير مثل #item.
map([1, 2, 3, 4], #item + 2) -> [3, 4, 5, 6]
map(['a', 'b', 'c', 'd'], #item + '_processed') -> ['a_processed', 'b_processed', 'c_processed', 'd_processed']
mapAssociation
mapAssociation(<value1> : map, <value2> : binaryFunction) => array
تحويل مخطط عن طريق ربط المفاتيح بقيم جديدة. إرجاع صفيف. يتطلب الأمر دالة مخطط حيث يمكنك معالجة العنصر كقيمة #key وقيمة حالية كما #value.
mapAssociation(['bojjus' -> 'gunchus', 'appa' -> 'ammi'], @(key = #key, value = #value)) => [@(key = 'bojjus', value = 'gunchus'), @(key = 'appa', value = 'ammi')]
mapIf
mapIf (<value1> : array, <value2> : binaryfunction, <value3>: binaryFunction) => any
تعيين صفيف بشكل مشروط إلى صفيف آخر بنفس الطول أو أصغر. قد تكون القيم من أي نوع بيانات بما في ذلك structTypes. يستغرق دالة تعيين حيث يمكنك معالجة العنصر في الصفيف مثل #item والفهرس الحالي مثل #index. بالنسبة للمخططات المتداخلة بعمق، يمكنك الرجوع إلى المخططات الأصلية باستخدام علامة #item_[n](#item_1, #index_1...)
.
mapIf([10, 20, 30], #item > 10, #item + 5) -> [25, 35]
mapIf(['icecream', 'cake', 'soda'], length(#item) > 4, upper(#item)) -> ['ICECREAM', 'CAKE']
mapIndex
mapIndex(<value1> : array, <value2> : binaryfunction) => any
تعيين كل عنصر من عناصر الصفيف إلى عنصر جديد باستخدام التعبير المقدم. يتوقع التعيين مرجعاً إلى عنصر واحد في دالة التعبير مثل #item ومرجعاً إلى فهرس العنصر مثل #index.
mapIndex([1, 2, 3, 4], #item + 2 + #index) -> [4, 6, 8, 10]
mapLoop
mapLoop(<value1> : integer, <value2> : unaryfunction) => any
حلقات من 1 إلى طول لإنشاء صفيف بهذا الطول. يستغرق دالة تعيين حيث يمكنك معالجة الفهرس في الصفيف مثل #index. بالنسبة للمخططات المتداخلة بعمق، يمكنك الرجوع إلى المخططات الأصلية باستخدام العلامة #index_n(#index_1, #index_2...).
mapLoop(3, #index * 10) -> [10, 20, 30]
max
max(<value1> : any) => any
الحصول على الحد الأقصى لقيمة العمود.
max(sales)
maxIf
maxIf(<value1> : boolean, <value2> : any) => any
استناداً إلى أحد المعايير، يتم الحصول على الحد الأقصى لقيمة العمود.
maxIf(region == 'West', sales)
md5
md5(<value1> : any, ...) => string
لحساب ملخص MD5 لمجموعة من الأعمدة لأنواع البيانات الأولية المتنوعة وإرجاع سلسلة سداسية عشرية مكونة من 32 حرفاً. يمكن استخدامه لحساب بصمة صف.
md5(5, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> '4ce8a880bd621a1ffad0bca905e1bc5a'
mean
mean(<value1> : number) => number
الحصول على متوسط قيم عمود. مثل متوسط.
mean(sales)
meanIf
meanIf(<value1> : boolean, <value2> : number) => number
استناداً إلى المعيار، يتم الحصول على متوسط قيم العمود. مثل avgIf.
meanIf(region == 'West', sales)
millisecond
millisecond(<value1> : timestamp, [<value2> : string]) => integer
الحصول على قيمة الملّي ثانية للتاريخ. يمكنك تمرير منطقة زمنية اختيارية في شكل "GMT" و"PST" و"UTC" و"America/Cayman". يتم استخدام المنطقة الزمنية المحلية على أنها المنطقة الزمنية الافتراضية. راجع فئة SimpleDateFormat
Java للتعرف على التنسيقات المتاحة. https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.
millisecond(toTimestamp('2009-07-30 12:58:59.871', 'yyyy-MM-dd HH:mm:ss.SSS')) -> 871
milliseconds
milliseconds(<value1> : integer) => long
المدة بالملّي ثانية لعدد من الملّي ثانية.
milliseconds(2) -> 2L
min
min(<value1> : any) => any
يحصل على الحد الأدنى لقيمة العمود.
min(sales)
minIf
minIf(<value1> : boolean, <value2> : any) => any
استناداً إلى المعيار، يتم الحصول على الحد الأدنى لقيمة العمود.
minIf(region == 'West', sales)
minus
minus(<value1> : any, <value2> : any) => any
طرح الأرقام. طرح عدد الأيام من تاريخ. طرح المدة من طابع زمني. طرح اثنين من الطوابع الزمنية للحصول على الفرق بالملّي ثانية. مثل - عامل التشغيل.
minus(20, 10) -> 10
20 - 10 -> 10
minus(toDate('2012-12-15'), 3) -> toDate('2012-12-12')
toDate('2012-12-15') - 3 -> toDate('2012-12-12')
toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS') + (days(1) + hours(2) - seconds(10)) -> toTimestamp('2019-02-04 07:19:18.871', 'yyyy-MM-dd HH:mm:ss.SSS')
toTimestamp('2019-02-03 05:21:34.851', 'yyyy-MM-dd HH:mm:ss.SSS') - toTimestamp('2019-02-03 05:21:36.923', 'yyyy-MM-dd HH:mm:ss.SSS') -> -2072
minute
minute(<value1> : timestamp, [<value2> : string]) => integer
الحصول على قيمة الدقيقة للطابع الزمني. يمكنك تمرير منطقة زمنية اختيارية في شكل "GMT" و"PST" و"UTC" و"America/Cayman". يتم استخدام المنطقة الزمنية المحلية على أنها المنطقة الزمنية الافتراضية. راجع فئة SimpleDateFormat
Java للتعرف على التنسيقات المتاحة. https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.
minute(toTimestamp('2009-07-30 12:58:59')) -> 58
minute(toTimestamp('2009-07-30 12:58:59'), 'PST') -> 58
minutes
minutes(<value1> : integer) => long
المدة بالملّي ثانية لعدد الدقائق.
minutes(2) -> 120000L
mlookup
mlookup(key, key2, ...) => complex[]
البحث عن جميع الصفوف المطابقة من مخزن التخزين المؤقت باستخدام المفاتيح المحددة التي تطابق المفاتيح من مخزن التخزين المؤقت.
cacheSink#mlookup(movieId)
mod
mod(<value1> : any, <value2> : any) => any
معامل زوج الأعداد. مثل % عامل التشغيل.
mod(20, 8) -> 4
20 % 8 -> 4
month
month(<value1> : datetime) => integer
الحصول على قيمة الشهر لتاريخ أو طابع زمني.
month(toDate('2012-8-8')) -> 8
monthsBetween
monthsBetween(<from date/timestamp> : datetime, <to date/timestamp> : datetime, [<roundoff> : boolean], [<time zone> : string]) => double
الحصول على عدد الأشهر بين تاريخين. يُمكنك تقريب الحساب. يمكنك تمرير منطقة زمنية اختيارية في شكل "GMT" و"PST" و"UTC" و"America/Cayman". يتم استخدام المنطقة الزمنية المحلية على أنها المنطقة الزمنية الافتراضية. راجع فئة SimpleDateFormat
Java للتعرف على التنسيقات المتاحة. https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.
monthsBetween(toTimestamp('1997-02-28 10:30:00'), toDate('1996-10-30')) -> 3.94959677
multiply
multiply(<value1> : any, <value2> : any) => any
ضرب زوج من الأعداد. مثل عامل التشغيل *.
multiply(20, 10) -> 200
20 * 10 -> 200
N
negate
negate(<value1> : number) => number
نفي رقماً. تحويل الأرقام الموجبة إلى سلبية والعكس صحيح.
negate(13) -> -13
nextSequence
nextSequence() => long
إرجاع التسلسل الفريد التالي. يكون الرقم متتالياً فقط داخل القسم ويسبقه رقم القسم.
nextSequence() == 12313112 -> false
normalize
normalize(<String to normalize> : string) => string
تطبيع قيمة السلسلة لفصل أحرف unicode المعلمة.
regexReplace(normalize('bo²s'), `\p{M}`, '') -> 'boys'
not
not(<value1> : boolean) => boolean
عامل النفي المنطقي.
not(true) -> false
not(10 == 20) -> true
notEquals
notEquals(<value1> : any, <value2> : any) => boolean
المقارنة لا تساوي عامل التشغيل. مثل != عامل التشغيل.
12 != 24 -> true
'bojjus' != 'bo' + 'jjus' -> false
nTile
nTile([<value1> : integer]) => integer
تقسم الدالة NTile
الصفوف لكل قسم من أقسام النافذة إلى n
مجموعات تتراوح من 1 إلى n
على الأكثر. ستختلف قيم التعبئة بمقدار 1 على الأكثر. إذا لم يتم تقسيم عدد الصفوف في القسم بالتساوي إلى عدد المجموعات، فسيتم توزيع القيم المتبقية بمعدل واحد لكل مجموعة، بدءاً من المجموعة الأولى. تعد الدالة NTile
مفيدة في حساب tertiles
، والربيعيات، والعشريات، وإحصاءات الملخص الشائعة الأخرى. تحسب الدالة متغيرين أثناء التهيئة: سيحتوي حجم المجموعة العادية على صف إضافي يضاف إليه. يعتمد كلا المتغيرين على حجم القسم الحالي. أثناء عملية الحساب، تتعقب الدالة رقم الصف الحالي ورقم المستودع الحالي ورقم الصف الذي سيتغير فيه المستودع (bucketThreshold). عندما يصل رقم الصف الحالي إلى عتبة المستودع، تتم زيادة قيمة المستودع بمقدار واحد وتتم زيادة العتبة بحجم المستودع (بالإضافة إلى واحد إضافي إذا تمت إضافة المستودع الحالي).
nTile()
nTile(numOfBuckets)
null
null() => null
إرجاع قيمة فارغة. استخدم الدالة syntax(null())
إذا كان هناك عمود باسم 'null'. أي عملية يتم استخدامها سينتج عنها NULL.
isNull('dumbo' + null) -> true
isNull(10 * null) -> true
isNull('') -> false
isNull(10 + 20) -> false
isNull(10/0) -> true
O
or
or(<value1> : boolean, <value2> : boolean) => boolean
عامل التشغيل المنطقي OR. مثل ||.
or(true, false) -> true
true || false -> true
originColumns
originColumns(<streamName> : string) => any
يحصل على كل أعمدة الإخراج لتدفق بيانات الأصل حيث تم إنشاء الأعمدة. يجب تضمينه في دالة أخرى.
array(toString(originColumns('source1')))
output
output() => any
إرجاع الصف الأول من نتائج مصدر ذاكرة التخزين المؤقت
cacheSink#output()
outputs
output() => any
إرجاع مجموعة صفوف الإخراج بأكملها لنتائج مخزن ذاكرة التخزين المؤقت
cacheSink#outputs()
P
partitionId
partitionId() => integer
إرجاع معرف القسم الحالي الذي يوجد به صف الإدخال.
partitionId()
pMod
pMod(<value1> : any, <value2> : any) => any
معامل إيجابي لزوج من الأرقام.
pmod(-20, 8) -> 4
power
power(<value1> : number, <value2> : number) => double
رفع رقم واحد إلى قوة آخر.
power(10, 2) -> 100
R
radians
radians(<value1> : number) => double
تحويل الدرجات إلى تقدير دائري
radians(180) => 3.141592653589793
random
random(<value1> : integral) => long
إرجاع رقم عشوائي بمنحه قيمة اختيارية داخل أحد الأقسام. يجب أن تكون النسخ الاحتياطية ذات قيمة ثابتة وتستخدم مع partitionId لإنتاج قيم عشوائية
random(1) == 1 -> false
rank
rank() => integer
حساب رتبة قيمة في مجموعة من القيم المحددة في ترتيب الإطار حسب العبارة. والنتيجة هي واحد زائد عدد الصفوف السابقة أو مساوية للصف الحالي في ترتيب القسم. سوف تنتج القيم فجوات في التسلسل. يعمل الترتيب حتى عندما لا يتم فرز البيانات ويبحث عن التغيير في القيم.
rank()
reassociate
reassociate(<value1> : map, <value2> : binaryFunction) => map
تحويل مخطط عن طريق ربط المفاتيح بقيم جديدة. يتطلب الأمر دالة مخطط حيث يمكنك معالجة العنصر كقيمة #key وقيمة حالية كما #value.
reassociate(['fruit' -> 'apple', 'vegetable' -> 'tomato'], substring(#key, 1, 1) + substring(#value, 1, 1)) => ['fruit' -> 'fa', 'vegetable' -> 'vt']
reduce
reduce(<value1> : array, <value2> : any, <value3> : binaryfunction, <value4> : unaryfunction) => any
تجميع العناصر في صفيف. يتوقع التقليل مرجعاً لمُجمَّع وعنصر واحد في دالة التعبير الأولى مثل #acc و#item ويتوقع استخدام القيمة الناتجة مثل #result في دالة التعبير الثانية.
toString(reduce(['1', '2', '3', '4'], '0', #acc + #item, #result)) -> '01234'
regexExtract
regexExtract(<string> : string, <regex to find> : string, [<match group 1-based index> : integral]) => string
استخراج سلسلة فرعية مطابقة لنمط regex محدد. تحدد المعلمة الأخيرة مجموعة المطابقة وتكون افتراضياً على 1 إذا تم حذفها. استخدم <regex>
(علامة اقتباس خلفية) لمطابقة سلسلة دون مهرب. يقوم الفهرس 0 بإرجاع كافة التطابقات. بدون مجموعات المطابقة، لن يرجع الفهرس 1 وما فوق أي نتيجة.
regexExtract('Cost is between 600 and 800 dollars', '(\\d+) and (\\d+)', 2) -> '800'
regexExtract('Cost is between 600 and 800 dollars', `(\d+) and (\d+)`, 2) -> '800'
regexMatch
regexMatch(<string> : string, <regex to match> : string) => boolean
التحقق مما إذا كانت السلسلة تطابق نمط regex المحدد. استخدم <regex>
(علامة اقتباس خلفية) لمطابقة سلسلة دون مهرب.
regexMatch('200.50', '(\\d+).(\\d+)') -> true
regexMatch('200.50', `(\d+).(\d+)`) -> true
regexReplace
regexReplace(<string> : string, <regex to find> : string, <substring to replace> : string) => string
استبدل جميع تكرارات نمط regex بسلسلة فرعية أخرى في السلسلة المحددة استخدم <regex>
(علامة اقتباس خلفية) لمطابقة سلسلة دون أحرف إلغاء.
regexReplace('100 and 200', '(\\d+)', 'bojjus') -> 'bojjus and bojjus'
regexReplace('100 and 200', `(\d+)`, 'gunchus') -> 'gunchus and gunchus'
regexSplit
regexSplit(<string to split> : string, <regex expression> : string) => array
تقسيم سلسلة بناءً على محدد استناداً إلى regex وإرجاع صفيف سلاسل.
regexSplit('bojjusAgunchusBdumbo', `[CAB]`) -> ['bojjus', 'gunchus', 'dumbo']
regexSplit('bojjusAgunchusBdumboC', `[CAB]`) -> ['bojjus', 'gunchus', 'dumbo', '']
(regexSplit('bojjusAgunchusBdumboC', `[CAB]`)[1]) -> 'bojjus'
isNull(regexSplit('bojjusAgunchusBdumboC', `[CAB]`)[20]) -> true
replace
replace(<string> : string, <substring to find> : string, [<substring to replace> : string]) => string
استبدال جميع تكرارات سلسلة فرعية مع سلسلة فرعية أخرى في السلسلة المحددة. إذا تم حذف المعلمة الأخيرة، فستكون السلسلة فارغة بشكل افتراضي.
replace('doggie dog', 'dog', 'cat') -> 'catgie cat'
replace('doggie dog', 'dog', '') -> 'gie '
replace('doggie dog', 'dog') -> 'gie '
reverse
reverse(<value1> : string) => string
عكس السلسلة.
reverse('gunchus') -> 'suhcnug'
right
right(<string to subset> : string, <number of characters> : integral) => string
استخراج سلسلة فرعية مع عدد من الأحرف من اليمين. مثل SUBSTRING(str, LENGTH(str) - n, n).
right('bojjus', 2) -> 'us'
right('bojjus', 20) -> 'bojjus'
rlike
rlike(<string> : string, <pattern match> : string) => boolean
التحقق مما إذا كانت السلسلة تطابق نمط regex المحدد.
rlike('200.50', `(\d+).(\d+)`) -> true
rlike('bogus', `M[0-9]+.*`) -> false
round
round(<number> : number, [<scale to round> : number], [<rounding option> : integral]) => double
تقريب رقم بمقياس اختياري ووضع تقريب اختياري. إذا تم حذف المقياس، فسيتم تعيينه افتراضياً على 0. إذا تم حذف الوضع، فسيتم تعيينه افتراضياً على ROUND_HALF_UP (5). تتضمن قيم التقريب
- ROUND_UP - وضع التقريب للتقريب بعيدا عن الصفر.
- ROUND_DOWN - وضع التقريب للتقريب نحو الصفر.
- ROUND_CEILING - وضع التقريب للتقريب نحو اللانهاية الإيجابية. [مثل ROUND_UP إذا كان الإدخال موجبا. إذا كان سالبا، يتصرف ك ROUND_DOWN. على سبيل المثال = -1.1 سيكون -1.0 مع ROUND_CEILING و-2 مع ROUND_UP]
- ROUND_FLOOR - وضع التقريب للتقريب نحو اللانهاية السلبية. [مثل ROUND_DOWN إذا كان الإدخال موجبا. إذا كانت سالبة، تتصرف كما ROUND_UP]
- ROUND_HALF_UP - وضع التقريب للتقريب نحو "أقرب جار" ما لم يكن كلا الجارين متساويين، وفي هذه الحالة ROUND_UP. [الأكثر شيوعا + الافتراضي لتدفق البيانات].
- ROUND_HALF_DOWN - وضع التقريب للتقريب نحو "أقرب جار" ما لم يكن كلا الجارين متساويين، وفي هذه الحالة ROUND_DOWN.
- ROUND_HALF_EVEN - وضع التقريب للتقريب نحو "أقرب جار" ما لم يكن كلا الجارين متساويين، وفي هذه الحالة، تقريب نحو الجار حتى.
- ROUND_UNNECESSARY - وضع التقريب لتأكيد أن عملية الجولة لها نتيجة دقيقة، ومن ثم لا يلزم التقريب.
round(100.123) -> 100.0
round(2.5, 0) -> 3.0
round(5.3999999999999995, 2, 7) -> 5.40
rowNumber
rowNumber() => integer
تعيين ترقيم صف تسلسلياً للصفوف في نافذة بدءاً من 1.
rowNumber()
rpad
rpad(<string to pad> : string, <final padded length> : integral, <padding> : string) => string
تعبئة السلسلة من جهة اليمين من خلال ترك مساحة متوفرة حتى تصبح بطول معين. إذا كان الخيط يساوي الطول أو أكبر منه، فسيتم قصه وفقاً للطول.
rpad('dumbo', 10, '-') -> 'dumbo-----'
rpad('dumbo', 4, '-') -> 'dumb'
rpad('dumbo', 8, '<>') -> 'dumbo<><'
rtrim
rtrim(<string to trim> : string, [<trim characters> : string]) => string
تقليص من جهة اليسار لسلسلة من الأحرف اللاحقة. إذا كانت المعلمة الثانية غير محددة، فإنها تقلص المسافة البيضاء. وإلا فإنه يقلص أي حرف محدد في المعلمة الثانية.
rtrim(' dumbo ') -> ' dumbo'
rtrim('!--!du!mbo!', '-!') -> '!--!du!mbo'
S
second
second(<value1> : timestamp, [<value2> : string]) => integer
الحصول على القيمة الثانية من تاريخ. يمكنك تمرير منطقة زمنية اختيارية في شكل "GMT" و"PST" و"UTC" و"America/Cayman". يتم استخدام المنطقة الزمنية المحلية على أنها المنطقة الزمنية الافتراضية. راجع فئة SimpleDateFormat
Java للتعرف على التنسيقات المتاحة. https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.
second(toTimestamp('2009-07-30 12:58:59')) -> 59
seconds
seconds(<value1> : integer) => long
المدة بالملّي ثانية لعدد الثواني.
seconds(2) -> 2000L
setBitSet
setBitSet (<value1>: array, <value2>:array) => array
تعيين مواضع البت في مجموعة البت هذه
setBitSet(toBitSet([10, 32]), [98]) => [4294968320L, 17179869184L]
sha1
sha1(<value1> : any, ...) => string
لحساب ملخص SHA-1 لمجموعة من الأعمدة لأنواع البيانات الأولية المتنوعة وإرجاع سلسلة سداسية عشرية مكونة من 40 حرفاً. يمكن استخدامه لحساب بصمة صف.
sha1(5, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> '46d3b478e8ec4e1f3b453ac3d8e59d5854e282bb'
sha2
sha2(<value1> : integer, <value2> : any, ...) => string
لحساب ملخص SHA-2 لمجموعة من أنواع البيانات الأولية المتغيرة مع إعطاء طول بت، والذي يمكن أن يكون فقط بقيم 0 (256)، 224، 256، 384، 512. يمكن استخدامه لحساب بصمة صف.
sha2(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> 'afe8a553b1761c67d76f8c31ceef7f71b66a1ee6f4e6d3b5478bf68b47d06bd3'
sin
sin(<value1> : number) => double
حساب قيمة الجيب.
sin(2) -> 0.9092974268256817
sinh
sinh(<value1> : number) => double
حساب جيب الزاوية الزائدي.
sinh(0) -> 0.0
size
size(<value1> : any) => integer
اكتشاف حجم صفيف أو نوع مخطط
size(['element1', 'element2']) -> 2
size([1,2,3]) -> 3
skewness
skewness(<value1> : number) => double
الحصول على انحراف العمود.
skewness(sales)
skewnessIf
skewnessIf(<value1> : boolean, <value2> : number) => double
بناءً على المعايير، يتم الحصول على انحراف العمود.
skewnessIf(region == 'West', sales)
slice
slice(<array to slice> : array, <from 1-based index> : integral, [<number of items> : integral]) => array
استخراج مجموعة فرعية من صفيف من موضع. الموضع هو مستند إلى 1. إذا تم حذف الطول، فسيتم تعيينه افتراضياً في نهاية السلسلة.
slice([10, 20, 30, 40], 1, 2) -> [10, 20]
slice([10, 20, 30, 40], 2) -> [20, 30, 40]
slice([10, 20, 30, 40], 2)[1] -> 20
isNull(slice([10, 20, 30, 40], 2)[0]) -> true
isNull(slice([10, 20, 30, 40], 2)[20]) -> true
slice(['a', 'b', 'c', 'd'], 8) -> []
sort
sort(<value1> : array, <value2> : binaryfunction) => array
فرز الصفيف باستخدام دالة التقييم المتوفرة. يتوقع الفرز مرجعاً إلى عنصرين متتاليين في دالة التعبير #item1 و#item2.
sort([4, 8, 2, 3], compare(#item1, #item2)) -> [2, 3, 4, 8]
sort(['a3', 'b2', 'c1'], iif(right(#item1, 1) >= right(#item2, 1), 1, -1)) -> ['c1', 'b2', 'a3']
soundex
soundex(<value1> : string) => string
الحصول على التعليمة البرمجية soundex
للسلسلة.
soundex('genius') -> 'G520'
split
split(<string to split> : string, <split characters> : string) => array
تقسيم سلسلة بناءً على محدد وإرجاع مصفوفة من السلاسل.
split('bojjus,guchus,dumbo', ',') -> ['bojjus', 'guchus', 'dumbo']
split('bojjus,guchus,dumbo', '|') -> ['bojjus,guchus,dumbo']
split('bojjus, guchus, dumbo', ', ') -> ['bojjus', 'guchus', 'dumbo']
split('bojjus, guchus, dumbo', ', ')[1] -> 'bojjus'
isNull(split('bojjus, guchus, dumbo', ', ')[0]) -> true
isNull(split('bojjus, guchus, dumbo', ', ')[20]) -> true
split('bojjusguchusdumbo', ',') -> ['bojjusguchusdumbo']
sqrt
sqrt(<value1> : number) => double
تحسب الجذر التربيعي لرقم.
sqrt(9) -> 3
startsWith
startsWith(<string> : string, <substring to check> : string) => boolean
التحقق مما إذا كانت السلسلة تبدأ بالسلسلة المرفقة.
startsWith('dumbo', 'du') -> true
stddev
stddev(<value1> : number) => double
الحصول على الانحراف المعياري للعمود.
stdDev(sales)
stddevIf
stddevIf(<value1> : boolean, <value2> : number) => double
استنادا إلى أحد المعايير، يتم الحصول على الانحراف المعياري للعمود.
stddevIf(region == 'West', sales)
stddevPopulation
stddevPopulation(<value1> : number) => double
الحصول على الانحراف المعياري لمحتوى العمود.
stddevPopulation(sales)
stddevPopulationIf
stddevPopulationIf(<value1> : boolean, <value2> : number) => double
استناداً إلى أحد المعايير، يتم الحصول على الانحراف المعياري لمحتوى العمود.
stddevPopulationIf(region == 'West', sales)
stddevSample
stddevSample(<value1> : number) => double
الحصول على نموذج الانحراف المعياري للعمود.
stddevSample(sales)
stddevSampleIf
stddevSampleIf(<value1> : boolean, <value2> : number) => double
استناداً إلى أحد المعايير، يتم الحصول على نموذج الانحراف المعياري للعمود.
stddevSampleIf(region == 'West', sales)
subDays
subDays(<date/timestamp> : datetime, <days to subtract> : integral) => datetime
طرح أيام من تاريخ أو طابع زمني. مثل - عامل تشغيل للتاريخ.
subDays(toDate('2016-08-08'), 1) -> toDate('2016-08-07')
subMonths
subMonths(<date/timestamp> : datetime, <months to subtract> : integral) => datetime
طرح أشهر من تاريخ أو طابع زمني.
subMonths(toDate('2016-09-30'), 1) -> toDate('2016-08-31')
substring
substring(<string to subset> : string, <from 1-based index> : integral, [<number of characters> : integral]) => string
استخراج سلسلة فرعية بطول معين من موضع. الموضع هو مستند إلى 1. إذا تم حذف الطول، فسيتم تعيينه افتراضياً في نهاية السلسلة.
substring('Cat in the hat', 5, 2) -> 'in'
substring('Cat in the hat', 5, 100) -> 'in the hat'
substring('Cat in the hat', 5) -> 'in the hat'
substring('Cat in the hat', 100, 100) -> ''
substringIndex
substringIndex(<سلسلة إلى مجموعة><فرعية محدد السلسلة>substringIndex( : سلسلة، : سلسلة، <عدد حالات حدوث> المحدد : متكامل]) => سلسلة
استخراج السلسلة الفرعية قبل حالات count
للمحدد. إذا كان count
إيجابيًا، يتم إرجاع كل شيء إلى يسار المحدد النهائي (العد من اليسار). إذا كان count
سلبيًا، يتم إرجاع كل شيء على يمين المحدد النهائي (العد من اليمين).
substringIndex('111-222-333', '-', 1) -> '111'
substringIndex('111-222-333', '-', 2) -> '111-222'
substringIndex('111-222-333', '-', -1) -> '333'
substringIndex('111-222-333', '-', -2) -> '222-333'
sum
sum(<value1> : number) => number
الحصول على المجموع الكلي لعمود رقمي.
sum(col)
sumDistinct
sumDistinct(<value1> : number) => number
الحصول على المجموع الكلي للقيم المميزة لعمود رقمي.
sumDistinct(col)
sumDistinctIf
sumDistinctIf(<value1> : boolean, <value2> : number) => number
استناداً إلى المعايير، يتم الحصول على المجموع الكلي لعمود رقمي. وقد يستند الشرط إلى أي عمود.
sumDistinctIf(state == 'CA' && commission < 10000, sales)
sumDistinctIf(true, sales)
sumIf
sumIf(<value1> : boolean, <value2> : number) => number
استناداً إلى المعايير، يتم الحصول على المجموع الكلي لعمود رقمي. وقد يستند الشرط إلى أي عمود.
sumIf(state == 'CA' && commission < 10000, sales)
sumIf(true, sales)
T
tan
tan(<value1> : number) => double
حساب قيمة ظل الزاوية.
tan(0) -> 0.0
tanh
tanh(<value1> : number) => double
حساب قيمة ظل الزاوية الزائدي.
tanh(0) -> 0.0
toBase64
toBase64(<value1> : string, <encoding type> : string]) => string
ترميز السلسلة المحددة في base64. يمكنك اختيارياً تمرير نوع الترميز
toBase64('bojjus') -> 'Ym9qanVz'
toBase64('± 25000, € 5.000,- |', 'Windows-1252') -> 'sSAyNTAwMCwggCA1LjAwMCwtIHw='
toBinary
toBinary(<value1> : any) => binary
تحويل أي رقمي/تاريخ/طابع زمني/سلسلة إلى تمثيل ثنائي.
toBinary(3) -> [0x11]
toBoolean
toBoolean(<value1> : string) => boolean
تحويل قيمة ('t', 'true', 'y', 'yes', '1') إلى true و('f', 'false', 'n', 'no', '0') إلى false وNULL إلى أي قيمة أخرى.
toBoolean('true') -> true
toBoolean('n') -> false
isNull(toBoolean('truthy')) -> true
toByte
toByte(<value> : any, [<format> : string], [<locale> : string]) => byte
تحويل أي رقم أو سلسلة إلى قيمة بايت. يمكن استخدام تنسيق Java العشري الاختياري للتحويل.
toByte(123)
123
toByte(0xFF)
-1
toByte('123')
123
toDate
toDate(<string> : any, [<date format> : string]) => date
تحويل سلسلة تاريخ الإدخال إلى تاريخ باستخدام تنسيق تاريخ إدخال اختياري. راجع فئة SimpleDateFormat
Java للتعرف على التنسيقات المتاحة. إذا تم حذف تنسيق تاريخ الإدخال، فإن التنسيق الافتراضي هو yyyy-[M]M-[d]d. التنسيقات المقبولة هي: [ yyyy, yyyy-[M]M, yyyy-[M]M-[d]d, yyyy-[M]M-[d]dT* ].
toDate('2012-8-18') -> toDate('2012-08-18')
toDate('12/18/2012', 'MM/dd/yyyy') -> toDate('2012-12-18')
toDecimal
toDecimal(<value> : any, [<precision> : integral], [<scale> : integral], [<format> : string], [<locale> : string]) => decimal(10,0)
تحويل أي رقم أو سلسلة إلى قيمة عشرية. إذا لم يتم تحديد الدقة والمقياس، فسيتم ضبطهما افتراضياً على (10،2). يمكن استخدام تنسيق Java العشري الاختياري للتحويل. تنسيق لغة اختيارية في شكل لغة BCP47 مثل en-US، de، zh-CN.
toDecimal(123.45) -> 123.45
toDecimal('123.45', 8, 4) -> 123.4500
toDecimal('$123.45', 8, 4,'$###.00') -> 123.4500
toDecimal('Ç123,45', 10, 2, 'Ç###,##', 'de') -> 123.45
toDouble
toDouble(<value> : any, [<format> : string], [<locale> : string]) => double
تحويل أي رقم أو سلسلة إلى قيمة مزودوجة. يمكن استخدام تنسيق Java العشري الاختياري للتحويل. تنسيق لغة اختيارية في شكل لغة BCP47 مثل en-US، de، zh-CN.
toDouble(123.45) -> 123.45
toDouble('123.45') -> 123.45
toDouble('$123.45', '$###.00') -> 123.45
toDouble('Ç123,45', 'Ç###,##', 'de') -> 123.45
toFloat
toFloat(<value> : any, [<format> : string], [<locale> : string]) => float
تحويل أي رقم أو سلسلة إلى قيمة معوم. يمكن استخدام تنسيق Java العشري الاختياري للتحويل. اقتطاع أي مزدوج.
toFloat(123.45) -> 123.45f
toFloat('123.45') -> 123.45f
toFloat('$123.45', '$###.00') -> 123.45f
toInteger
toInteger(<value> : any, [<format> : string], [<locale> : string]) => integer
تحويل أي رقم أو سلسلة إلى قيمة عدد صحيح. يمكن استخدام تنسيق Java العشري الاختياري للتحويل. اقتطاع أي قيمة طويلة، معوم، مزدوجة.
toInteger(123) -> 123
toInteger('123') -> 123
toInteger('$123', '$###') -> 123
toLong
toLong(<value> : any, [<format> : string], [<locale> : string]) => long
تحويل أي رقم أو سلسلة إلى قيمة طويلة. يمكن استخدام تنسيق Java العشري الاختياري للتحويل. اقتطاع أي معوم مزدوج.
toLong(123) -> 123
toLong('123') -> 123
toLong('$123', '$###') -> 123
topN
topN(<column/expression> : any, <count> : long, <n> : integer) => array
الحصول على أعلى قيم N لهذا العمود استنادًا إلى وسيطة العد.
topN(custId, count, 5)
topN(productId, num_sales, 10)
toShort
toShort(<value> : any, [<format> : string], [<locale> : string]) => short
تحويل أي رقم أو سلسلة إلى قيمة قصيرة. يمكن استخدام تنسيق Java العشري الاختياري للتحويل. اقتطاع أي عدد صحيح، طويل، معوم، مزدوج.
toShort(123) -> 123
toShort('123') -> 123
toShort('$123', '$###') -> 123
toString
toString(<value> : any, [<number format/date format> : string], [<date locale> : string]) => string
تحويل نوع بيانات أولي إلى سلسلة. بالنسبة للأرقام والتواريخ، يمكن تحديد تنسيق. إذا لم يتم تحديد الإعداد الافتراضي للنظام، فسيتم اختيار تنسيق Java العشري للأرقام. الرجوع إلى Java SimpleDateFormat لجميع تنسيقات التاريخ المحتملة، التنسيق الافتراضي هو yyyy-MM-dd. للتاريخ أو الطابع الزمني، يمكن تحديد الإعدادات المحلية بشكل اختياري.
toString(10) -> '10'
toString('engineer') -> 'engineer'
toString(123456.789, '##,###.##') -> '123,456.79'
toString(123.78, '000000.000') -> '000123.780'
toString(12345, '##0.#####E0') -> '12.345E3'
toString(toDate('2018-12-31')) -> '2018-12-31'
isNull(toString(toDate('2018-12-31', 'MM/dd/yy'))) -> true
toString(4 == 20) -> 'false'
toString(toDate('12/31/18', 'MM/dd/yy', 'es-ES'), 'MM/dd/yy', 'de-DE')
toTimestamp
toTimestamp(<string> : any, [<timestamp format> : string], [<time zone> : string]) => timestamp
تحويل سلسلة إلى طابع زمني مع إعطاء تنسيق طابع زمني اختياري. إذا تم حذف الطابع الزمني، فسيتم استخدام النمط الافتراضي yyyy-[M]M-[d]d hh:mm:ss[.f...]. يمكنك تمرير منطقة زمنية اختيارية في شكل "GMT" و"PST" و"UTC" و"America/Cayman". يدعم الطابع الزمني دقة تصل إلى ملّي ثانية بقيمة 999. راجع فئة SimpleDateFormat
Java للتعرف على التنسيقات المتاحة. https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.
toTimestamp('2016-12-31 00:12:00') -> toTimestamp('2016-12-31 00:12:00')
toTimestamp('2016-12-31T00:12:00', 'yyyy-MM-dd\'T\'HH:mm:ss', 'PST') -> toTimestamp('2016-12-31 00:12:00')
toTimestamp('12/31/2016T00:12:00', 'MM/dd/yyyy\'T\'HH:mm:ss') -> toTimestamp('2016-12-31 00:12:00')
millisecond(toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS')) -> 871
toUTC
toUTC(<value1> : timestamp, [<value2> : string]) => timestamp
تحويل الطابع الزمني إلى UTC. يمكنك تمرير منطقة زمنية اختيارية في شكل "GMT" و"PST" و"UTC" و"America/Cayman". تم تعيينه افتراضيًا على المنطقة الزمنية الحالية. راجع فئة SimpleDateFormat
Java للتعرف على التنسيقات المتاحة. https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.
toUTC(currentTimestamp()) == toTimestamp('2050-12-12 19:18:12') -> false
toUTC(currentTimestamp(), 'Asia/Seoul') != toTimestamp('2050-12-12 19:18:12') -> true
translate
translate(<string to translate> : string, <lookup characters> : string, <replace characters> : string) => string
استبدل مجموعة واحدة من الأحرف بمجموعة أخرى من الأحرف في السلسلة. استبدال الأحرف 1 إلى 1.
translate('(bojjus)', '()', '[]') -> '[bojjus]'
translate('(gunchus)', '()', '[') -> '[gunchus'
trim
trim(<string to trim> : string, [<trim characters> : string]) => string
تقليص سلسلة من الأحرف البادئة واللاحقة. إذا كانت المعلمة الثانية غير محددة، فإنها تقلص المسافة البيضاء. وإلا فإنه يقلص أي حرف محدد في المعلمة الثانية.
trim(' dumbo ') -> 'dumbo'
trim('!--!du!mbo!', '-!') -> 'dumbo'
true
true() => boolean
إرجاع قيمة حقيقية دوماً. استخدم الدالة syntax(true())
إذا كان هناك عمود يسمى 'true'.
(10 + 20 == 30) -> true
(10 + 20 == 30) -> true()
typeMatch
typeMatch(<type> : string, <base type> : string) => boolean
مطابقة نوع العمود. يمكن استخدامها فقط في تعبيرات الأنماط. يتطابق الرقم مع قصير أو عدد صحيح أو طويل أو مزدوج أو عائم أو عشري، ويتطابق التكامل مع التطابقات القصيرة أو الصحيحة أو الطويلة أو الكسرية المزدوجة أو العائمة أو العشرية أو التاريخ والوقت الذي يتطابق مع نوع التاريخ أو الطابع الزمني.
typeMatch(type, 'number')
typeMatch('date', 'datetime')
U
unescape
unescape(<string_to_escape> : string, <format> : string) => string
عدم إلغاء سلسلة وفقاً لتنسيق. القيم الحرفية للتنسيق المقبول هي "json" و"xml" و"ecmascript" و"html" و"java".
unescape('{\\\\\"value\\\\\": 10}', 'json')
'{\\\"value\\\": 10}'
unfold
unfold (<value1>: array) => any
فتح صفيف في مجموعة من الصفائف وتكرار قيم الأعمدة المتبقية في كل صف.
unfold(addresses) => any
unfold( @(name = salesPerson, sales = salesAmount) ) => any
unhex
unhex(<value1>: string) => binary
إلغاء قيمة سداسية عشرية لقيمة ثنائية من تمثيل السلسلة. يمكن استخدام هذا مع sha2 وmd5 للتحويل من سلسلة إلى تمثيل ثنائي
unhex('1fadbe') -> toBinary([toByte(0x1f), toByte(0xad), toByte(0xbe)])
unhex(md5(5, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4'))) -> toBinary([toByte(0x4c),toByte(0xe8),toByte(0xa8),toByte(0x80),toByte(0xbd),toByte(0x62),toByte(0x1a),toByte(0x1f),toByte(0xfa),toByte(0xd0),toByte(0xbc),toByte(0xa9),toByte(0x05),toByte(0xe1),toByte(0xbc),toByte(0x5a)])
union
union(<value1>: array, <value2> : array) => array
إرجاع مجموعة اتحاد من العناصر المميزة من صفيفتين.
union([10, 20, 30], [20, 40]) => [10, 20, 30, 40]
upper
upper(<value1> : string) => string
تكبير أحرف سلسلة.
upper('bojjus') -> 'BOJJUS'
uuid
uuid() => string
إرجاع UUID الذي تم إنشاؤه.
uuid()
V
variance
variance(<value1> : number) => double
الحصول على تباين العمود.
variance(sales)
varianceIf
varianceIf(<value1> : boolean, <value2> : number) => double
استناداً إلى أحد المعايير، يتم الحصول على تباين العمود.
varianceIf(region == 'West', sales)
variancePopulation
variancePopulation(<value1> : number) => double
الحصول على تباين المحتوى للعمود.
variancePopulation(sales)
variancePopulationIf
variancePopulationIf(<value1> : boolean, <value2> : number) => double
استناداً إلى أحد المعايير، يتم الحصول على تباين المحتوى لعمود.
variancePopulationIf(region == 'West', sales)
varianceSample
varianceSample(<value1> : number) => double
الحصول على التباين غير المتحيز للعمود.
varianceSample(sales)
varianceSampleIf
varianceSampleIf(<value1> : boolean, <value2> : number) => double
استناداً إلى أحد المعايير، يتم الحصول على التباين غير المتحيز للعمود.
varianceSampleIf(region == 'West', sales)
W
weekOfYear
weekOfYear(<value1> : datetime) => integer
الحصول على أسبوع من العام بتاريخ محدد.
weekOfYear(toDate('2008-02-20')) -> 8
weeks
weeks(<value1> : integer) => long
المدة بالملّي ثانية لعدد الأسابيع.
weeks(2) -> 1209600000L
س
xor
xor(<value1> : boolean, <value2> : boolean) => boolean
عامل التشغيل المنطقي XOR. مثل ^ عامل التشغيل.
xor(true, false) -> true
xor(true, true) -> false
true ^ false -> true
Y
year
year(<value1> : datetime) => integer
الحصول على قيمة السنة لتاريخ.
year(toDate('2012-8-8')) -> 2012
المحتوى ذو الصلة
- قائمة بجميع الوظائف المجمعة.
- قائمة بجميع دالات الصفيف.
- قائمة بجميع وظائف البحث المخزنة مؤقتًا.
- قائمة بجميع دوال التحويل.
- قائمة بجميع دالات التاريخ والوقت.
- قائمة بجميع دالات التعبير.
- قائمة بجميع وظائف الخريطة.
- قائمة بجميع وظائف ميتا.
- قائمة بجميع وظائف النافذة.
- تعرف على كيفية استخدام منشئ التعبير.