ClickHouse/docs/fa/sql-reference/functions/array-functions.md
2020-10-13 20:23:29 +03:00

39 KiB
Raw Blame History

machine_translated machine_translated_rev toc_priority toc_title
true 72537a2d52 46 کار با ارریس

توابع برای کار با ارریس

خالی

بازده 1 برای یک مجموعه خالی, یا 0 برای یک مجموعه غیر خالی. نتیجه این نوع UInt8. این تابع نیز برای رشته کار می کند.

notEmpty

بازده 0 برای یک مجموعه خالی, یا 1 برای یک مجموعه غیر خالی. نتیجه این نوع UInt8. این تابع نیز برای رشته کار می کند.

طول

بازگرداندن تعداد اقلام در مجموعه. نتیجه این نوع UInt64. این تابع نیز برای رشته کار می کند.

emptyArrayUInt8, emptyArrayUInt16, emptyArrayUInt32, emptyArrayUInt64

emptyArrayInt8, emptyArrayInt16, emptyArrayInt32, emptyArrayInt64

emptyArrayFloat32, emptyArrayFloat64

emptyArrayDate, emptyArrayDateTime

تخت خواب

قبول صفر استدلال و مجموعه ای خالی از نوع مناسب را برمی گرداند.

خالی

یک مجموعه خالی را می پذیرد و یک مجموعه یک عنصر را که برابر با مقدار پیش فرض است باز می گرداند.

محدوده( پایان), دامنه (شروع, پایان [, گام])

بازگرداندن مجموعه ای از اعداد از ابتدا تا انتها-1 به گام. اگر استدلال start مشخص نشده است, به طور پیش فرض به 0. اگر استدلال step مشخص نشده است, به طور پیش فرض به 1. این رفتار تقریبا مانند پیتون range. اما تفاوت این است که همه نوع استدلال باید باشد UInt اعداد. فقط در مورد, یک استثنا پرتاب می شود اگر ارریس با طول کل بیش از 100,000,000 عناصر در یک بلوک داده ها ایجاد.

array(x1, …), operator [x1, …]

ایجاد مجموعه ای از استدلال تابع. استدلال باید ثابت باشد و انواع که کوچکترین نوع رایج. حداقل یک استدلال باید تصویب شود, چرا که در غیر این صورت مشخص نیست که چه نوع از مجموعه ای برای ایجاد. به این معنا که شما نمی توانید از این تابع برای ایجاد یک مجموعه خالی استفاده کنید (برای انجام این کار از emptyArray* تابع در بالا توضیح داده شد). بازگشت یک Array(T) نوع نتیجه, جایی که T کوچکترین نوع رایج از استدلال گذشت.

موافقم

ترکیبی از ارریس به عنوان استدلال گذشت.

arrayConcat(arrays)

پارامترها

  • arrays Arbitrary number of arguments of & حذف نوع. مثال
SELECT arrayConcat([1, 2], [3, 4], [5, 6]) AS res
┌─res───────────┐
│ [1,2,3,4,5,6] │
└───────────────┘

هشدار داده می شود]

عنصر را با شاخص دریافت کنید n از مجموعه arr. n باید هر نوع عدد صحیح باشد. شاخص ها در مجموعه ای از یک شروع می شوند. شاخص های منفی پشتیبانی می شوند. در این مورد, این انتخاب عنصر مربوطه شماره از پایان. به عنوان مثال, arr[-1] اخرین وسیله ست

اگر شاخص می افتد در خارج از مرزهای مجموعه, این گرداند برخی از مقدار پیش فرض (0 برای اعداد, یک رشته خالی برای رشته, و غیره.), به جز برای مورد با یک مجموعه غیر ثابت و یک شاخص ثابت 0 (در این مورد وجود خواهد داشت یک خطا Array indices are 1-based).

است (ورود, علم)

بررسی اینکه arr اری elem عنصر. بازده 0 اگر عنصر در مجموعه نیست, یا 1 اگر.

NULL به عنوان یک ارزش پردازش شده است.

SELECT has([1, 2, NULL], NULL)
┌─has([1, 2, NULL], NULL)─┐
│                       1 │
└─────────────────────────┘

حصال

بررسی اینکه یک مجموعه زیر مجموعه دیگری باشد.

hasAll(set, subset)

پارامترها

  • set Array of any type with a set of elements.
  • subset Array of any type with elements that should be tested to be a subset of set.

مقادیر بازگشتی

  • 1 اگر set شامل تمام عناصر از subset.
  • 0 وگرنه

خواص عجیب و غریب

  • مجموعه خالی زیر مجموعه ای از هر است.
  • Null پردازش به عنوان یک ارزش.
  • منظور از ارزش ها در هر دو ارریس مهم نیست.

مثالها

SELECT hasAll([], []) بازده 1.

SELECT hasAll([1, Null], [Null]) بازده 1.

SELECT hasAll([1.0, 2, 3, 4], [1, 3]) بازده 1.

SELECT hasAll(['a', 'b'], ['a']) بازده 1.

SELECT hasAll([1], ['a']) بازده 0.

SELECT hasAll([[1, 2], [3, 4]], [[1, 2], [3, 5]]) بازده 0.

hasAny

بررسی اینکه دو بند چهار راه توسط برخی از عناصر.

hasAny(array1, array2)

پارامترها

  • array1 Array of any type with a set of elements.
  • array2 Array of any type with a set of elements.

مقادیر بازگشتی

  • 1 اگر array1 و array2 حداقل یک عنصر مشابه داشته باشید.
  • 0 وگرنه

خواص عجیب و غریب

  • Null پردازش به عنوان یک ارزش.
  • منظور از ارزش ها در هر دو ارریس مهم نیست.

مثالها

SELECT hasAny([1], []) بازگشت 0.

SELECT hasAny([Null], [Null, 1]) بازگشت 1.

SELECT hasAny([-128, 1., 512], [1]) بازگشت 1.

SELECT hasAny([[1, 2], [3, 4]], ['a', 'c']) بازگشت 0.

SELECT hasAll([[1, 2], [3, 4]], [[1, 2], [1, 2]]) بازگشت 1.

هشدار داده می شود)

بازگرداندن شاخص از اولین x عنصر (با شروع از 1) اگر در مجموعه ای است, یا 0 اگر نیست.

مثال:

SELECT indexOf([1, 3, NULL, NULL], NULL)
┌─indexOf([1, 3, NULL, NULL], NULL)─┐
│                                 3 │
└───────────────────────────────────┘

عناصر را به NULL به عنوان مقادیر طبیعی انجام می شود.

هشدار داده می شود)

بازده تعداد عناصر موجود در آرایه برابر با x. معادل arrayCount (elem -> elem = x arr).

NULL عناصر به عنوان مقادیر جداگانه به کار گرفته.

مثال:

SELECT countEqual([1, 2, NULL, NULL], NULL)
┌─countEqual([1, 2, NULL, NULL], NULL)─┐
│                                    2 │
└──────────────────────────────────────┘

هشدار داده می شود)

Returns the array [1, 2, 3, …, length (arr) ]

این تابع به طور معمول با مجموعه ای استفاده می شود. این اجازه می دهد شمارش چیزی فقط یک بار برای هر مجموعه پس از استفاده از مجموعه پیوستن. مثال:

SELECT
    count() AS Reaches,
    countIf(num = 1) AS Hits
FROM test.hits
ARRAY JOIN
    GoalsReached,
    arrayEnumerate(GoalsReached) AS num
WHERE CounterID = 160656
LIMIT 10
┌─Reaches─┬──Hits─┐
│   95606 │ 31406 │
└─────────┴───────┘

در این مثال, می رسد تعداد تبدیل است (رشته دریافت پس از استفاده از مجموعه ملحق), و بازدید تعداد بازدید صفحات (رشته قبل از مجموعه ملحق). در این مورد خاص شما می توانید همان نتیجه را در یک راه ساده تر:

SELECT
    sum(length(GoalsReached)) AS Reaches,
    count() AS Hits
FROM test.hits
WHERE (CounterID = 160656) AND notEmpty(GoalsReached)
┌─Reaches─┬──Hits─┐
│   95606 │ 31406 │
└─────────┴───────┘

این تابع همچنین می توانید در توابع مرتبه بالاتر استفاده می شود. برای مثال می توانید از شاخص های مجموعه ای برای عناصری که با شرایط مطابقت دارند استفاده کنید.

arrayEnumerateUniq(arr, …)

بازگرداندن مجموعه ای به همان اندازه به عنوان مجموعه منبع, نشان می دهد برای هر عنصر چه موقعیت خود را در میان عناصر با همان مقدار. به عنوان مثال: ارریینومراتونیک([10, 20, 10, 30]) = [1, 1, 2, 1].

این تابع در هنگام استفاده از مجموعه ای پیوستن و تجمع عناصر مجموعه ای مفید است. مثال:

SELECT
    Goals.ID AS GoalID,
    sum(Sign) AS Reaches,
    sumIf(Sign, num = 1) AS Visits
FROM test.visits
ARRAY JOIN
    Goals,
    arrayEnumerateUniq(Goals.ID) AS num
WHERE CounterID = 160656
GROUP BY GoalID
ORDER BY Reaches DESC
LIMIT 10
┌──GoalID─┬─Reaches─┬─Visits─┐
│   53225 │    3214 │   1097 │
│ 2825062 │    3188 │   1097 │
│   56600 │    2803 │    488 │
│ 1989037 │    2401 │    365 │
│ 2830064 │    2396 │    910 │
│ 1113562 │    2372 │    373 │
│ 3270895 │    2262 │    812 │
│ 1084657 │    2262 │    345 │
│   56599 │    2260 │    799 │
│ 3271094 │    2256 │    812 │
└─────────┴─────────┴────────┘

در این مثال هر هدف شناسه محاسبه تعداد تبدیل (هر عنصر در اهداف تو در تو ساختار داده ها یک هدف است که رسیده بود که ما اشاره به عنوان یک تبدیل) و تعداد جلسات. بدون مجموعه ملحق, ما می خواهیم تعداد جلسات به عنوان مجموع شمارش (امضا کردن). اما در این مورد خاص ردیف شد ضرب در تو در تو در اهداف و ساختار آن در سفارش به تعداد هر جلسه یک بار بعد از این ما اعمال یک شرط به ارزش arrayEnumerateUniq(اهداف است.ID) تابع.

تابع ارریینومراتونیک می تواند چندین بار از همان اندازه به عنوان استدلال استفاده کند. در این مورد, منحصر به فرد است برای تاپل از عناصر در موقعیت های مشابه در تمام ارریس در نظر گرفته.

SELECT arrayEnumerateUniq([1, 1, 1, 2, 2, 2], [1, 1, 2, 1, 1, 2]) AS res
┌─res───────────┐
│ [1,2,1,1,2,1] │
└───────────────┘

این در هنگام استفاده از مجموعه با یک ساختار داده های تو در تو و تجمع بیشتر در سراسر عناصر متعدد در این ساختار ملحق لازم است.

عقبگرد

حذف مورد گذشته از مجموعه.

arrayPopBack(array)

پارامترها

  • array Array.

مثال

SELECT arrayPopBack([1, 2, 3]) AS res
┌─res───┐
│ [1,2] │
└───────┘

ساحل

اولین مورد را از مجموعه حذف می کند.

arrayPopFront(array)

پارامترها

  • array Array.

مثال

SELECT arrayPopFront([1, 2, 3]) AS res
┌─res───┐
│ [2,3] │
└───────┘

عقب نشینی

یک مورد را به انتهای مجموعه اضافه می کند.

arrayPushBack(array, single_value)

پارامترها

  • array Array.
  • single_value A single value. Only numbers can be added to an array with numbers, and only strings can be added to an array of strings. When adding numbers, ClickHouse automatically sets the single_value نوع داده مجموعه را تایپ کنید. برای کسب اطلاعات بیشتر در مورد انواع داده ها در خانه کلیک کنید “انواع داده ها”. می تواند باشد NULL. تابع می افزاید: NULL عنصر به مجموعه ای, و نوع عناصر مجموعه ای تبدیل به Nullable.

مثال

SELECT arrayPushBack(['a'], 'b') AS res
┌─res───────┐
│ ['a','b'] │
└───────────┘

ساحلی

یک عنصر را به ابتدای مجموعه اضافه می کند.

arrayPushFront(array, single_value)

پارامترها

  • array Array.
  • single_value A single value. Only numbers can be added to an array with numbers, and only strings can be added to an array of strings. When adding numbers, ClickHouse automatically sets the single_value نوع داده مجموعه را تایپ کنید. برای کسب اطلاعات بیشتر در مورد انواع داده ها در خانه کلیک کنید “انواع داده ها”. می تواند باشد NULL. تابع می افزاید: NULL عنصر به مجموعه ای, و نوع عناصر مجموعه ای تبدیل به Nullable.

مثال

SELECT arrayPushFront(['b'], 'a') AS res
┌─res───────┐
│ ['a','b'] │
└───────────┘

نمایش سایت

طول مجموعه را تغییر می دهد.

arrayResize(array, size[, extender])

پارامترها:

  • array — Array.
  • size — Required length of the array.
    • اگر size کمتر از اندازه اصلی مجموعه است, مجموعه ای از سمت راست کوتاه.
  • اگر size مجموعه بزرگتر از اندازه اولیه مجموعه است که به سمت راست گسترش می یابد extender مقادیر یا مقادیر پیش فرض برای نوع داده از موارد مجموعه.
  • extender — Value for extending an array. Can be NULL.

مقدار بازگشتی:

مجموعه ای از طول size.

نمونه هایی از تماس

SELECT arrayResize([1], 3)
┌─arrayResize([1], 3)─┐
│ [1,0,0]             │
└─────────────────────┘
SELECT arrayResize([1], 3, NULL)
┌─arrayResize([1], 3, NULL)─┐
│ [1,NULL,NULL]             │
└───────────────────────────┘

بند

یک تکه از مجموعه را برمی گرداند.

arraySlice(array, offset[, length])

پارامترها

  • array Array of data.
  • offset Indent from the edge of the array. A positive value indicates an offset on the left, and a negative value is an indent on the right. Numbering of the array items begins with 1.
  • length - طول قطعه مورد نیاز . اگر شما یک مقدار منفی مشخص, تابع یک تکه باز می گرداند [offset, array_length - length). اگر شما حذف ارزش, تابع برش می گرداند [offset, the_end_of_array].

مثال

SELECT arraySlice([1, 2, NULL, 4, 5], 2, 3) AS res
┌─res────────┐
│ [2,NULL,4] │
└────────────┘

عناصر مجموعه ای به NULL به عنوان مقادیر طبیعی انجام می شود.

arraySort([func,] arr, …)

عناصر را مرتب می کند arr صف در صعودی. اگر func تابع مشخص شده است, مرتب سازی سفارش توسط نتیجه تعیین func تابع اعمال شده به عناصر مجموعه. اگر func قبول استدلال های متعدد arraySort تابع به تصویب می رسد چند بند که استدلال func خواهد به مطابقت. نمونه های دقیق در پایان نشان داده شده است arraySort توصیف.

نمونه ای از مقادیر صحیح مرتب سازی:

SELECT arraySort([1, 3, 3, 0]);
┌─arraySort([1, 3, 3, 0])─┐
│ [0,1,3,3]               │
└─────────────────────────┘

نمونه ای از مقادیر رشته مرتب سازی:

SELECT arraySort(['hello', 'world', '!']);
┌─arraySort(['hello', 'world', '!'])─┐
│ ['!','hello','world']              │
└────────────────────────────────────┘

ترتیب مرتب سازی زیر را برای NULL, NaN و Inf مقادیر:

SELECT arraySort([1, nan, 2, NULL, 3, nan, -4, NULL, inf, -inf]);
┌─arraySort([1, nan, 2, NULL, 3, nan, -4, NULL, inf, -inf])─┐
│ [-inf,-4,1,2,3,inf,nan,nan,NULL,NULL]                     │
└───────────────────────────────────────────────────────────┘
  • -Inf مقادیر برای اولین بار در مجموعه هستند.
  • NULL ارزشهای خبری عبارتند از:
  • NaN مقادیر درست قبل هستند NULL.
  • Inf مقادیر درست قبل هستند NaN.

توجه داشته باشید که arraySort یک عملکرد عالی مرتبه. شما می توانید یک تابع لامبدا را به عنوان اولین استدلال منتقل کنید. در این مورد ترتیب مرتب سازی بر اساس نتیجه تابع لامبدا اعمال شده به عناصر مجموعه تعیین می شود.

بیایید مثال زیر را در نظر بگیریم:

SELECT arraySort((x) -> -x, [1, 2, 3]) as res;
┌─res─────┐
│ [3,2,1] │
└─────────┘

For each element of the source array, the lambda function returns the sorting key, that is, [1 > -1, 2 > -2, 3 > -3]. Since the arraySort تابع انواع کلید به ترتیب صعودی, نتیجه این است [3, 2, 1]. بنابراین (x) > -x عملکرد لامبدا مجموعه ترتیب نزولی در یک مرتب سازی.

تابع لامبدا می تواند استدلال های متعدد را قبول کند. در این مورد, شما نیاز به تصویب arraySort تابع چند بند از طول یکسان است که استدلال تابع لامبدا به مطابقت. مجموعه حاصل از عناصر از اولین مجموعه ورودی تشکیل شده است. به عنوان مثال:

SELECT arraySort((x, y) -> y, ['hello', 'world'], [2, 1]) as res;
┌─res────────────────┐
│ ['world', 'hello'] │
└────────────────────┘

در اینجا عناصر موجود در مجموعه دوم ([2, 1]) تعریف یک کلید مرتب سازی برای عنصر مربوطه از مجموعه منبع ([hello, world]), به این معنا که, [hello > 2, world > 1]. Since the lambda function doesn't use x مقادیر واقعی مجموعه منبع بر نظم در نتیجه تاثیر نمی گذارد. پس, hello خواهد بود که عنصر دوم در نتیجه, و world خواهد بود که برای اولین بار.

نمونه های دیگر در زیر نشان داده شده.

SELECT arraySort((x, y) -> y, [0, 1, 2], ['c', 'b', 'a']) as res;
┌─res─────┐
│ [2,1,0] │
└─────────┘
SELECT arraySort((x, y) -> -y, [0, 1, 2], [1, 2, 3]) as res;
┌─res─────┐
│ [2,1,0] │
└─────────┘

!!! note "یادداشت" برای بهبود کارایی مرتب سازی تبدیل شوارتز استفاده شده است.

arrayReverseSort([func,] arr, …)

عناصر را مرتب می کند arr صف در نزولی. اگر func تابع مشخص شده است, arr بر اساس نتیجه طبقه بندی شده اند func عملکرد به عناصر مجموعه اعمال می شود و سپس مجموعه مرتب شده معکوس می شود. اگر func قبول استدلال های متعدد arrayReverseSort تابع به تصویب می رسد چند بند که استدلال func خواهد به مطابقت. نمونه های دقیق در پایان نشان داده شده است arrayReverseSort توصیف.

نمونه ای از مقادیر صحیح مرتب سازی:

SELECT arrayReverseSort([1, 3, 3, 0]);
┌─arrayReverseSort([1, 3, 3, 0])─┐
│ [3,3,1,0]                      │
└────────────────────────────────┘

نمونه ای از مقادیر رشته مرتب سازی:

SELECT arrayReverseSort(['hello', 'world', '!']);
┌─arrayReverseSort(['hello', 'world', '!'])─┐
│ ['world','hello','!']                     │
└───────────────────────────────────────────┘

ترتیب مرتب سازی زیر را برای NULL, NaN و Inf مقادیر:

SELECT arrayReverseSort([1, nan, 2, NULL, 3, nan, -4, NULL, inf, -inf]) as res;
┌─res───────────────────────────────────┐
│ [inf,3,2,1,-4,-inf,nan,nan,NULL,NULL] │
└───────────────────────────────────────┘
  • Inf مقادیر برای اولین بار در مجموعه هستند.
  • NULL ارزشهای خبری عبارتند از:
  • NaN مقادیر درست قبل هستند NULL.
  • -Inf مقادیر درست قبل هستند NaN.

توجه داشته باشید که arrayReverseSort یک عملکرد عالی مرتبه. شما می توانید یک تابع لامبدا را به عنوان اولین استدلال منتقل کنید. مثال زیر نشان داده شده.

SELECT arrayReverseSort((x) -> -x, [1, 2, 3]) as res;
┌─res─────┐
│ [1,2,3] │
└─────────┘

این مجموعه به روش زیر مرتب شده است:

  1. ابتدا مجموعه منبع ([1, 2, 3]) با توجه به نتیجه تابع لامبدا اعمال شده به عناصر مجموعه طبقه بندی شده اند. نتیجه یک مجموعه است [3, 2, 1].
  2. مجموعه ای است که در مرحله قبل به دست, معکوس شده است. بنابراین, نتیجه نهایی است [1, 2, 3].

تابع لامبدا می تواند استدلال های متعدد را قبول کند. در این مورد, شما نیاز به تصویب arrayReverseSort تابع چند بند از طول یکسان است که استدلال تابع لامبدا به مطابقت. مجموعه حاصل از عناصر از اولین مجموعه ورودی تشکیل شده است. به عنوان مثال:

SELECT arrayReverseSort((x, y) -> y, ['hello', 'world'], [2, 1]) as res;
┌─res───────────────┐
│ ['hello','world'] │
└───────────────────┘

در این مثال مجموعه به روش زیر مرتب شده است:

  1. در ابتدا مجموعه منبع ([hello, world]) با توجه به نتیجه تابع لامبدا اعمال شده به عناصر از ارریس طبقه بندی شده اند. عناصر که در مجموعه دوم به تصویب رسید ([2, 1]), تعریف کلید مرتب سازی برای عناصر مربوطه را از مجموعه منبع. نتیجه یک مجموعه است [world, hello].
  2. مجموعه ای که در مرحله قبل طبقه بندی شده اند, معکوس شده است. بنابراین نتیجه نهایی این است [hello, world].

نمونه های دیگر در زیر نشان داده شده.

SELECT arrayReverseSort((x, y) -> y, [4, 3, 5], ['a', 'b', 'c']) AS res;
┌─res─────┐
│ [5,3,4] │
└─────────┘
SELECT arrayReverseSort((x, y) -> -y, [4, 3, 5], [1, 2, 3]) AS res;
┌─res─────┐
│ [4,3,5] │
└─────────┘

arrayUniq(arr, …)

اگر یک استدلال به تصویب می رسد, تعداد عناصر مختلف در مجموعه شمارش. اگر استدلال های متعدد به تصویب می رسد, شمارش تعداد تاپل های مختلف از عناصر در موقعیت های مربوطه در مجموعه های متعدد.

اگر شما می خواهید برای دریافت یک لیست از اقلام منحصر به فرد در مجموعه, شما می توانید از ارری راهاهن استفاده(groupUniqArray, arr).

هشدار داده می شود)

یک تابع خاص. بخش را ببینید “ArrayJoin function”.

کلیدواژه

محاسبه تفاوت بین عناصر مجموعه مجاور. بازگرداندن مجموعه ای که عنصر اول خواهد بود 0, دوم تفاوت بین است a[1] - a[0], etc. The type of elements in the resulting array is determined by the type inference rules for subtraction (e.g. UInt8 - UInt8 = Int16).

نحو

arrayDifference(array)

پارامترها

مقادیر بازگشتی

بازگرداندن مجموعه ای از تفاوت بین عناصر مجاور.

نوع: اینترنت*, Int*, شناور*.

مثال

پرسوجو:

SELECT arrayDifference([1, 2, 3, 4])

نتیجه:

┌─arrayDifference([1, 2, 3, 4])─┐
│ [0,1,1,1]                     │
└───────────────────────────────┘

مثال سرریز به علت نوع نتیجه اینترن64:

پرسوجو:

SELECT arrayDifference([0, 10000000000000000000])

نتیجه:

┌─arrayDifference([0, 10000000000000000000])─┐
│ [0,-8446744073709551616]                   │
└────────────────────────────────────────────┘

حوزه ارریددیست

مجموعه ای را می گیرد و تنها شامل عناصر مجزا می شود.

نحو

arrayDistinct(array)

پارامترها

مقادیر بازگشتی

بازگرداندن مجموعه ای حاوی عناصر متمایز.

مثال

پرسوجو:

SELECT arrayDistinct([1, 2, 2, 3, 1])

نتیجه:

┌─arrayDistinct([1, 2, 2, 3, 1])─┐
│ [1,2,3]                        │
└────────────────────────────────┘

هشدار داده می شود)

بازگرداندن مجموعه ای از همان اندازه به عنوان مجموعه منبع, نشان می دهد که هر عنصر برای اولین بار در مجموعه منبع به نظر می رسد.

مثال:

SELECT arrayEnumerateDense([10, 20, 10, 30])
┌─arrayEnumerateDense([10, 20, 10, 30])─┐
│ [1,2,1,3]                             │
└───────────────────────────────────────┘

هشدار داده می شود)

طول می کشد مجموعه ای با عناصر که در تمام مجموعه منبع در حال حاضر می گرداند. عناصر سفارش در مجموعه حاصل همان است که در مجموعه اول است.

مثال:

SELECT
    arrayIntersect([1, 2], [1, 3], [2, 3]) AS no_intersect,
    arrayIntersect([1, 2], [1, 3], [1, 4]) AS intersect
┌─no_intersect─┬─intersect─┐
│ []           │ [1]       │
└──────────────┴───────────┘

نمایش سایت

یک تابع کلی برای عناصر مجموعه ای اعمال می شود و نتیجه خود را باز می گرداند. نام تابع تجمع به عنوان یک رشته در نقل قول های تک منتقل می شود 'max', 'sum'. هنگام استفاده از توابع دانه پارامتری پارامتر پس از نام تابع در پرانتز نشان داده شده است 'uniqUpTo(6)'.

نحو

arrayReduce(agg_func, arr1, arr2, ..., arrN)

پارامترها

  • agg_func — The name of an aggregate function which should be a constant رشته.
  • arr — Any number of & حذف نوع ستون به عنوان پارامترهای تابع تجمع.

مقدار بازگشتی

مثال

SELECT arrayReduce('max', [1, 2, 3])
┌─arrayReduce('max', [1, 2, 3])─┐
│                             3 │
└───────────────────────────────┘

اگر یک تابع جمع استدلال های متعدد طول می کشد, سپس این تابع باید به مجموعه های متعدد از همان اندازه اعمال.

SELECT arrayReduce('maxIf', [3, 5], [1, 0])
┌─arrayReduce('maxIf', [3, 5], [1, 0])─┐
│                                    3 │
└──────────────────────────────────────┘

به عنوان مثال با یک تابع جمع پارامتری:

SELECT arrayReduce('uniqUpTo(3)', [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
┌─arrayReduce('uniqUpTo(3)', [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])─┐
│                                                           4 │
└─────────────────────────────────────────────────────────────┘

تغییرات

یک تابع کلی برای عناصر مجموعه ای در محدوده های داده شده اعمال می شود و مجموعه ای حاوی نتیجه مربوط به هر محدوده را باز می گرداند. تابع همان نتیجه به عنوان چند بازگشت arrayReduce(agg_func, arraySlice(arr1, index, length), ...).

نحو

arrayReduceInRanges(agg_func, ranges, arr1, arr2, ..., arrN)

پارامترها

  • agg_func — The name of an aggregate function which should be a constant رشته.
  • ranges — The ranges to aggretate which should be an & حذف از توپلس که شامل شاخص و طول هر محدوده.
  • arr — Any number of & حذف نوع ستون به عنوان پارامترهای تابع تجمع.

مقدار بازگشتی

مثال

SELECT arrayReduceInRanges(
    'sum',
    [(1, 5), (2, 3), (3, 4), (4, 4)],
    [1000000, 200000, 30000, 4000, 500, 60, 7]
) AS res
┌─res─────────────────────────┐
│ [1234500,234000,34560,4567] │
└─────────────────────────────┘

هشدار داده می شود)

بازگرداندن مجموعه ای از همان اندازه به عنوان مجموعه اصلی حاوی عناصر در جهت معکوس.

مثال:

SELECT arrayReverse([1, 2, 3])
┌─arrayReverse([1, 2, 3])─┐
│ [3,2,1]                 │
└─────────────────────────┘

معکوس)

مترادف برای “arrayReverse”

ارریفلاتتن

مجموعه ای از ارریس ها را به یک مجموعه صاف تبدیل می کند.

تابع:

  • امر به هر عمق مجموعه های تو در تو.
  • طعم هایی را که در حال حاضر مسطح هستند تغییر نمی دهد.

مجموعه مسطح شامل تمام عناصر از تمام منابع است.

نحو

flatten(array_of_arrays)

نام مستعار: flatten.

پارامترها

  • array_of_arrays& حذف ارریس به عنوان مثال, [[1,2,3], [4,5]].

مثالها

SELECT flatten([[[1]], [[2], [3]]])
┌─flatten(array(array([1]), array([2], [3])))─┐
│ [1,2,3]                                     │
└─────────────────────────────────────────────┘

اررایکمپکت

عناصر تکراری متوالی را از یک مجموعه حذف می کند. ترتیب مقادیر نتیجه به ترتیب در مجموعه منبع تعیین می شود.

نحو

arrayCompact(arr)

پارامترها

arr — The & حذف برای بازرسی.

مقدار بازگشتی

مجموعه ای بدون تکراری.

نوع: Array.

مثال

پرسوجو:

SELECT arrayCompact([1, 1, nan, nan, 2, 3, 3, 3])

نتیجه:

┌─arrayCompact([1, 1, nan, nan, 2, 3, 3, 3])─┐
│ [1,nan,nan,2,3]                            │
└────────────────────────────────────────────┘

ارریزیپ

ترکیبی از چندین ردیف به یک مجموعه واحد. مجموعه حاصل شامل عناصر مربوطه را از ارریس منبع به تاپل در جهت ذکر شده از استدلال گروه بندی می شوند.

نحو

arrayZip(arr1, arr2, ..., arrN)

پارامترها

این تابع می تواند هر تعداد از مجموعه ای از انواع مختلف را. تمام ورودی های ورودی باید با اندازه یکسان باشند.

مقدار بازگشتی

  • مجموعه ای با عناصر از ارریس منبع به گروه بندی می شوند توپلس. انواع داده ها در تاپل همان نوع از بند ورودی هستند و در همان جهت به عنوان ارریس به تصویب می رسد.

نوع: & حذف.

مثال

پرسوجو:

SELECT arrayZip(['a', 'b', 'c'], [5, 2, 1])

نتیجه:

┌─arrayZip(['a', 'b', 'c'], [5, 2, 1])─┐
│ [('a',5),('b',2),('c',1)]            │
└──────────────────────────────────────┘

ارریایکو

محاسبه حراج (منطقه تحت منحنی, که یک مفهوم در یادگیری ماشین است, مشاهده اطلاعات بیشتر: https://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve).

نحو

arrayAUC(arr_scores, arr_labels)

پارامترها

  • arr_scores — scores prediction model gives.
  • arr_labels — labels of samples, usually 1 for positive sample and 0 for negtive sample.

مقدار بازگشتی را برمی گرداند ارزش حراج با نوع شناور64.

مثال پرسوجو:

select arrayAUC([0.1, 0.4, 0.35, 0.8], [0, 0, 1, 1])

نتیجه:

┌─arrayAUC([0.1, 0.4, 0.35, 0.8], [0, 0, 1, 1])─┐
│                                          0.75 │
└────────────────────────────────────────---──┘

مقاله اصلی