12 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | d734a8e46d |
57 | بالاتر سفارش |
توابع مرتبه بالاتر
->
اپراتور, لامبدا (پارامترهای, اکسپر) تابع
Allows describing a lambda function for passing to a higher-order function. The left side of the arrow has a formal parameter, which is any ID, or multiple formal parameters – any IDs in a tuple. The right side of the arrow has an expression that can use these formal parameters, as well as any table columns.
مثالها: x -> 2 * x, str -> str != Referer.
توابع مرتبه بالاتر تنها می تواند توابع لامبدا به عنوان استدلال عملکردی خود را قبول.
یک تابع لامبدا که استدلال های متعدد می پذیرد را می توان به یک تابع مرتبه بالاتر منتقل می شود. در این مورد, تابع مرتبه بالاتر به تصویب می رسد چند مجموعه ای از طول یکسان است که این استدلال به مطابقت.
برای برخی از توابع مانند پیاده کردن یا ارریسوم, استدلال اول (تابع لامبدا) را می توان حذف. در این مورد, نقشه برداری یکسان فرض شده است.
یک تابع لامبدا را نمی توان برای توابع زیر حذف کرد:
arrayMap(func, arr1, …)
بازگرداندن مجموعه ای از برنامه اصلی func
عملکرد به هر عنصر در arr
صف کردن.
مثالها:
SELECT arrayMap(x -> (x + 2), [1, 2, 3]) as res;
┌─res─────┐
│ [3,4,5] │
└─────────┘
مثال زیر نشان می دهد که چگونه برای ایجاد یک تاپل از عناصر از مجموعه های مختلف:
SELECT arrayMap((x, y) -> (x, y), [1, 2, 3], [4, 5, 6]) AS res
┌─res─────────────────┐
│ [(1,4),(2,5),(3,6)] │
└─────────────────────┘
توجه داشته باشید که استدلال اول (تابع لامبدا) را نمی توان در حذف arrayMap
تابع.
arrayFilter(func, arr1, …)
بازگرداندن مجموعه ای حاوی تنها عناصر در arr1
برای کدام func
چیزی غیر از 0 را برمی گرداند.
مثالها:
SELECT arrayFilter(x -> x LIKE '%World%', ['Hello', 'abc World']) AS res
┌─res───────────┐
│ ['abc World'] │
└───────────────┘
SELECT
arrayFilter(
(i, x) -> x LIKE '%World%',
arrayEnumerate(arr),
['Hello', 'abc World'] AS arr)
AS res
┌─res─┐
│ [2] │
└─────┘
توجه داشته باشید که استدلال اول (تابع لامبدا) را نمی توان در حذف arrayFilter
تابع.
arrayFill(func, arr1, …)
پویش از طریق arr1
از عنصر اول به عنصر گذشته و جایگزین arr1[i]
توسط arr1[i - 1]
اگر func
بازده 0. اولین عنصر arr1
جایگزین نخواهد شد.
مثالها:
SELECT arrayFill(x -> not isNull(x), [1, null, 3, 11, 12, null, null, 5, 6, 14, null, null]) AS res
┌─res──────────────────────────────┐
│ [1,1,3,11,12,12,12,5,6,14,14,14] │
└──────────────────────────────────┘
توجه داشته باشید که استدلال اول (تابع لامبدا) را نمی توان در حذف arrayFill
تابع.
arrayReverseFill(func, arr1, …)
پویش از طریق arr1
از عنصر گذشته به عنصر اول و جایگزین arr1[i]
توسط arr1[i + 1]
اگر func
بازده 0. عنصر گذشته از arr1
جایگزین نخواهد شد.
مثالها:
SELECT arrayReverseFill(x -> not isNull(x), [1, null, 3, 11, 12, null, null, 5, 6, 14, null, null]) AS res
┌─res────────────────────────────────┐
│ [1,3,3,11,12,5,5,5,6,14,NULL,NULL] │
└────────────────────────────────────┘
توجه داشته باشید که استدلال اول (تابع لامبدا) را نمی توان در حذف arrayReverseFill
تابع.
arraySplit(func, arr1, …)
شکافتن arr1
به چندین ردیف چه زمانی func
بازگرداندن چیزی غیر از 0, مجموعه خواهد شد در سمت چپ عنصر تقسیم. مجموعه قبل از اولین عنصر تقسیم نخواهد شد.
مثالها:
SELECT arraySplit((x, y) -> y, [1, 2, 3, 4, 5], [1, 0, 0, 1, 0]) AS res
┌─res─────────────┐
│ [[1,2,3],[4,5]] │
└─────────────────┘
توجه داشته باشید که استدلال اول (تابع لامبدا) را نمی توان در حذف arraySplit
تابع.
arrayReverseSplit(func, arr1, …)
شکافتن arr1
به چندین ردیف چه زمانی func
بازگرداندن چیزی غیر از 0, مجموعه خواهد شد در سمت راست عنصر تقسیم. مجموعه پس از عنصر گذشته تقسیم نخواهد شد.
مثالها:
SELECT arrayReverseSplit((x, y) -> y, [1, 2, 3, 4, 5], [1, 0, 0, 1, 0]) AS res
┌─res───────────────┐
│ [[1],[2,3,4],[5]] │
└───────────────────┘
توجه داشته باشید که استدلال اول (تابع لامبدا) را نمی توان در حذف arraySplit
تابع.
arrayCount([func,] arr1, …)
بازگرداندن تعدادی از عناصر در مجموعه ارر که فارک چیزی غیر از گرداند 0. اگر ‘func’ مشخص نشده است, تعداد عناصر غیر صفر گرداند در مجموعه.
arrayExists([func,] arr1, …)
بازده 1 اگر حداقل یک عنصر در وجود دارد ‘arr’ برای کدام ‘func’ چیزی غیر از 0 را برمی گرداند. در غیر این صورت, باز می گردد 0.
arrayAll([func,] arr1, …)
بازده 1 اگر ‘func’ چیزی غیر از 0 را برای تمام عناصر در ‘arr’. در غیر این صورت, باز می گردد 0.
arraySum([func,] arr1, …)
بازگرداندن مجموع ‘func’ ارزشهای خبری عبارتند از: اگر تابع حذف شده است, فقط می گرداند مجموع عناصر مجموعه.
arrayFirst(func, arr1, …)
بازگرداندن اولین عنصر در ‘arr1’ تنظیم برای کدام ‘func’ چیزی غیر از 0 را برمی گرداند.
توجه داشته باشید که استدلال اول (تابع لامبدا) را نمی توان در حذف arrayFirst
تابع.
arrayFirstIndex(func, arr1, …)
بازگرداندن شاخص عنصر اول در ‘arr1’ تنظیم برای کدام ‘func’ چیزی غیر از 0 را برمی گرداند.
توجه داشته باشید که استدلال اول (تابع لامبدا) را نمی توان در حذف arrayFirstIndex
تابع.
arrayCumSum([func,] arr1, …)
بازگرداندن مجموعه ای از مبالغ بخشی از عناصر در مجموعه منبع (مجموع در حال اجرا). اگر func
تابع مشخص شده است, سپس ارزش عناصر مجموعه توسط این تابع قبل از جمع تبدیل.
مثال:
SELECT arrayCumSum([1, 1, 1, 1]) AS res
┌─res──────────┐
│ [1, 2, 3, 4] │
└──────────────┘
هشدار داده می شود)
مثل arrayCumSum
, بازگرداندن مجموعه ای از مبالغ بخشی از عناصر در مجموعه منبع (مجموع در حال اجرا). متفاوت arrayCumSum
, هنگامی که ارزش سپس بازگشت شامل یک مقدار کمتر از صفر, ارزش است جایگزین با صفر و محاسبه بعدی با صفر پارامترهای انجام. به عنوان مثال:
SELECT arrayCumSumNonNegative([1, 1, -4, 1]) AS res
┌─res───────┐
│ [1,2,0,1] │
└───────────┘
arraySort([func,] arr1, …)
بازگرداندن مجموعه ای به عنوان نتیجه مرتب سازی عناصر arr1
به ترتیب صعودی. اگر func
تابع مشخص شده است, مرتب سازی سفارش توسط نتیجه تابع تعیین func
اعمال شده به عناصر مجموعه (ارریس)
این تبدیل شوارتز برای بهبود کارایی مرتب سازی استفاده می شود.
مثال:
SELECT arraySort((x, y) -> y, ['hello', 'world'], [2, 1]);
┌─res────────────────┐
│ ['world', 'hello'] │
└────────────────────┘
برای کسب اطلاعات بیشتر در مورد arraySort
روش, دیدن توابع برای کار با ارریس بخش.
arrayReverseSort([func,] arr1, …)
بازگرداندن مجموعه ای به عنوان نتیجه مرتب سازی عناصر arr1
به ترتیب نزولی. اگر func
تابع مشخص شده است, مرتب سازی سفارش توسط نتیجه تابع تعیین func
اعمال شده به عناصر مجموعه ای (ارریس).
مثال:
SELECT arrayReverseSort((x, y) -> y, ['hello', 'world'], [2, 1]) as res;
┌─res───────────────┐
│ ['hello','world'] │
└───────────────────┘
برای کسب اطلاعات بیشتر در مورد arrayReverseSort
روش, دیدن توابع برای کار با ارریس بخش.