mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-19 14:11:58 +00:00
e8a5804e76
* update presentations * CLICKHOUSE-2936: redirect from clickhouse.yandex.ru and clickhouse.yandex.com * update submodule * lost files * CLICKHOUSE-2981: prefer sphinx docs over original reference * CLICKHOUSE-2981: docs styles more similar to main website + add flags to switch language links * update presentations * Less confusing directory structure (docs -> doc/reference/) * Minify sphinx docs too * Website release script: fail fast + pass docker hash on deploy * Do not underline links in docs * shorter * cleanup docker images * tune nginx config * CLICKHOUSE-3043: get rid of habrastorage links * Lost translation * CLICKHOUSE-2936: temporary client-side redirect * behaves weird in test * put redirect back * CLICKHOUSE-3047: copy docs txts to public too * move to proper file * remove old pages to avoid confusion * Remove reference redirect warning for now * Refresh README.md * Yellow buttons in docs * Use svg flags instead of unicode ones in docs * fix test website instance * Put flags to separate files * wrong flag * Copy Yandex.Metrica introduction from main page to docs * Yet another home page structure change, couple new blocks (CLICKHOUSE-3045) * Update Contacts section * CLICKHOUSE-2849: more detailed legal information * CLICKHOUSE-2978 preparation - split by files * More changes in Contacts block * Tune texts on index page * update presentations * One more benchmark * Add usage sections to index page, adapted from slides * Get the roadmap started, based on slides from last ClickHouse Meetup * CLICKHOUSE-2977: some rendering tuning * Get rid of excessive section in the end of getting started * Make headers linkable * CLICKHOUSE-2981: links to editing reference - https://github.com/yandex/ClickHouse/issues/849 * CLICKHOUSE-2981: fix mobile styles in docs * Ban crawling of duplicating docs * Open some external links in new tab * Ban old docs too * Lots of trivial fixes in english docs * Lots of trivial fixes in russian docs * Remove getting started copies in markdown * Add Yandex.Webmaster * Fix some sphinx warnings * More warnings fixed in english docs * More sphinx warnings fixed * Add code-block:: text * More code-block:: text * These headers look not that well * Better switch between documentation languages * merge use_case.rst into ya_metrika_task.rst * Edit the agg_functions.rst texts * Add lost empty lines
74 lines
2.8 KiB
ReStructuredText
74 lines
2.8 KiB
ReStructuredText
Higher-order functions
|
|
----------------------
|
|
|
|
-> operator, lambda(params, expr) function
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Allows describing a lambda function for passing to a higher-order function. The left side of the arrow has a formal parameter - 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.
|
|
|
|
Examples: ``x -> 2 * x, str -> str != Referer.``
|
|
|
|
Higher-order functions can only accept lambda functions as their functional argument.
|
|
|
|
A lambda function that accepts multiple arguments can be passed to a higher-order function. In this case, the higher-order function is passed several arrays of identical length that these arguments will correspond to.
|
|
|
|
For all functions other than 'arrayMap' and 'arrayFilter', the first argument (the lambda function) can be omitted. In this case, identical mapping is assumed.
|
|
|
|
arrayMap(func, arr1, ...)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Returns an array obtained from the original application of the 'func' function to each element in the 'arr' array.
|
|
|
|
arrayFilter(func, arr1, ...)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Returns an array containing only the elements in 'arr1' for which 'func' returns something other than 0.
|
|
|
|
Examples:
|
|
|
|
.. code-block:: sql
|
|
|
|
SELECT arrayFilter(x -> x LIKE '%World%', ['Hello', 'abc World']) AS res
|
|
|
|
.. code-block:: text
|
|
|
|
┌─res───────────┐
|
|
│ ['abc World'] │
|
|
└───────────────┘
|
|
|
|
.. code-block:: sql
|
|
|
|
SELECT
|
|
arrayFilter(
|
|
(i, x) -> x LIKE '%World%',
|
|
arrayEnumerate(arr),
|
|
['Hello', 'abc World'] AS arr)
|
|
AS res
|
|
|
|
.. code-block:: text
|
|
|
|
┌─res─┐
|
|
│ [2] │
|
|
└─────┘
|
|
|
|
arrayCount([func,] arr1, ...)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Returns the number of elements in 'arr' for which 'func' returns something other than 0. If 'func' is not specified, it returns the number of non-zero items in the array.
|
|
|
|
arrayExists([func,] arr1, ...)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Returns 1 if there is at least one element in 'arr' for which 'func' returns something other than 0. Otherwise, it returns 0.
|
|
|
|
arrayAll([func,] arr1, ...)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Returns 1 if 'func' returns something other than 0 for all the elements in 'arr'. Otherwise, it returns 0.
|
|
|
|
arraySum([func,] arr1, ...)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Returns the sum of the 'func' values. If the function is omitted, it just returns the sum of the array elements.
|
|
|
|
arrayFirst(func, arr1, ...)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Returns the first element in the 'arr1' array for which 'func' returns something other than 0.
|
|
|
|
arrayFirstIndex(func, arr1, ...)
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Returns the index of the first element in the 'arr1' array for which 'func' returns something other than 0.
|