ClickHouse/docs/tr/sql-reference/functions/higher-order-functions.md
Ivan Blinkov cd14f9ebcb
SQL reference refactoring (#10857)
* split up select.md

* array-join.md basic refactoring

* distinct.md basic refactoring

* format.md basic refactoring

* from.md basic refactoring

* group-by.md basic refactoring

* having.md basic refactoring

* additional index.md refactoring

* into-outfile.md basic refactoring

* join.md basic refactoring

* limit.md basic refactoring

* limit-by.md basic refactoring

* order-by.md basic refactoring

* prewhere.md basic refactoring

* adjust operators/index.md links

* adjust sample.md links

* adjust more links

* adjust operatots links

* fix some links

* adjust aggregate function article titles

* basic refactor of remaining select clauses

* absolute paths in make_links.sh

* run make_links.sh

* remove old select.md locations

* translate docs/es

* translate docs/fr

* translate docs/fa

* remove old operators.md location

* change operators.md links

* adjust links in docs/es

* adjust links in docs/es

* minor texts adjustments

* wip

* update machine translations to use new links

* fix changelog

* es build fixes

* get rid of some select.md links

* temporary adjust ru links

* temporary adjust more ru links

* improve curly brace handling

* adjust ru as well

* fa build fix

* ru link fixes

* zh link fixes

* temporary disable part of anchor checks
2020-05-15 07:34:54 +03:00

9.8 KiB
Raw Blame History

machine_translated machine_translated_rev toc_priority toc_title
true 72537a2d52 57 Yüksek Sipariş

Yüksek mertebeden fonksiyonlar

-> operatör, lambda (params, expr) fonksiyonu

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.

Örnekler: x -> 2 * x, str -> str != Referer.

Daha yüksek mertebeden işlevler yalnızca Lambda işlevlerini işlevsel argümanları olarak kabul edebilir.

Birden çok bağımsız değişkeni kabul eden bir lambda işlevi, daha yüksek mertebeden bir işleve geçirilebilir. Bu durumda, yüksek mertebeden işlev, bu bağımsız değişkenlerin karşılık geleceği aynı uzunlukta birkaç diziden geçirilir.

Gibi bazı işlevler için arrayCount veya arraySum, ilk argüman (lambda işlevi) ihmal edilebilir. Bu durumda, aynı eşleme varsayılır.

Aşağıdaki işlevler için bir lambda işlevi ihmal edilemez:

arrayMap(func, arr1, …)

Özgün uygulamadan elde edilen bir dizi döndürür func fonksiyon inunda her ele elementmana arr dizi.

Örnekler:

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

Aşağıdaki örnek, farklı dizilerden bir öğe kümesinin nasıl oluşturulacağını gösterir:

SELECT arrayMap((x, y) -> (x, y), [1, 2, 3], [4, 5, 6]) AS res
┌─res─────────────────┐
│ [(1,4),(2,5),(3,6)] │
└─────────────────────┘

İlk argümanın (lambda işlevi) atlanamayacağını unutmayın. arrayMap İşlev.

arrayFilter(func, arr1, …)

Yalnızca öğeleri içeren bir dizi döndürür arr1 hangi için func 0'dan başka bir şey döndürür.

Örnekler:

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] │
└─────┘

İlk argümanın (lambda işlevi) atlanamayacağını unutmayın. arrayFilter İşlev.

arrayFill(func, arr1, …)

Tarama yoluyla arr1 ilk öğeden son öğeye ve değiştir arr1[i] tarafından arr1[i - 1] eğer func 0 döndürür. İlk eleman arr1 değiştir notilm .eyecektir.

Örnekler:

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] │
└──────────────────────────────────┘

İlk argümanın (lambda işlevi) atlanamayacağını unutmayın. arrayFill İşlev.

arrayReverseFill(func, arr1, …)

Tarama yoluyla arr1 son öğeden ilk öğeye ve değiştir arr1[i] tarafından arr1[i + 1] eğer func 0 döndürür. The La lastst element of arr1 değiştir notilm .eyecektir.

Örnekler:

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] │
└────────────────────────────────────┘

İlk argümanın (lambda işlevi) atlanamayacağını unutmayın. arrayReverseFill İşlev.

arraySplit(func, arr1, …)

Bölme arr1 birden fazla diziye. Ne zaman func 0'dan başka bir şey döndürür, dizi öğenin sol tarafında bölünecektir. Dizi ilk öğeden önce bölünmez.

Örnekler:

SELECT arraySplit((x, y) -> y, [1, 2, 3, 4, 5], [1, 0, 0, 1, 0]) AS res
┌─res─────────────┐
│ [[1,2,3],[4,5]] │
└─────────────────┘

İlk argümanın (lambda işlevi) atlanamayacağını unutmayın. arraySplit İşlev.

arrayReverseSplit(func, arr1, …)

Bölme arr1 birden fazla diziye. Ne zaman func 0'dan başka bir şey döndürür, dizi öğenin sağ tarafında bölünecektir. Dizi son öğeden sonra bölünmez.

Örnekler:

SELECT arrayReverseSplit((x, y) -> y, [1, 2, 3, 4, 5], [1, 0, 0, 1, 0]) AS res
┌─res───────────────┐
│ [[1],[2,3,4],[5]] │
└───────────────────┘

İlk argümanın (lambda işlevi) atlanamayacağını unutmayın. arraySplit İşlev.

arrayCount([func,] arr1, …)

Func 0'dan başka bir şey döndüren arr dizisindeki öğelerin sayısını döndürür. Eğer func belirtilmemişse, dizideki sıfır olmayan öğelerin sayısını döndürür.

arrayExists([func,] arr1, …)

İçinde en az bir öğe varsa 1 değerini döndürür arr hangi için func 0'dan başka bir şey döndürür. Aksi takdirde, 0 döndürür.

arrayAll([func,] arr1, …)

Döner 1 Eğer func içindeki tüm öğeler için 0'dan başka bir şey döndürür arr. Aksi takdirde, 0 döndürür.

arraySum([func,] arr1, …)

Toplamını döndürür func değerler. İşlev atlanırsa, sadece dizi öğelerinin toplamını döndürür.

arrayFirst(func, arr1, …)

İlk öğeyi döndürür arr1 dizi hangi func 0'dan başka bir şey döndürür.

İlk argümanın (lambda işlevi) atlanamayacağını unutmayın. arrayFirst İşlev.

arrayFirstIndex(func, arr1, …)

İlk öğenin dizinini döndürür arr1 dizi hangi func 0'dan başka bir şey döndürür.

İlk argümanın (lambda işlevi) atlanamayacağını unutmayın. arrayFirstIndex İşlev.

arrayCumSum([func,] arr1, …)

Kaynak dizideki öğelerin kısmi toplamlarının bir dizisini döndürür (çalışan bir toplam). Eğer... func işlev belirtilir, daha sonra dizi öğelerinin değerleri toplanmadan önce bu işlev tarafından dönüştürülür.

Örnek:

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

arrayCumSumNonNegative(arr)

Aynı olarak arrayCumSum, kaynak dizideki öğelerin kısmi toplamlarının bir dizisini döndürür (çalışan bir toplam). Farklı arrayCumSum, daha sonra döndürülen değer sıfırdan küçük bir değer içerdiğinde, değer sıfır ile değiştirilir ve sonraki hesaplama sıfır parametrelerle gerçekleştirilir. Mesela:

SELECT arrayCumSumNonNegative([1, 1, -4, 1]) AS res
┌─res───────┐
│ [1,2,0,1] │
└───────────┘

arraySort([func,] arr1, …)

Öğeleri sıralama sonucu bir dizi döndürür arr1 artan düzende. Eğer... func fonksiyon belirtilir, sıralama sırası fonksiyonun sonucu ile belirlenir func dizi elemanlarına uygulanır (diziler)

Bu Schwartzian dönüşümü sıralama verimliliğini artırmak için kullanılır.

Örnek:

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

Hakkında daha fazla bilgi için arraySort yöntem, görmek Dizilerle çalışmak için işlevler bölme.

arrayReverseSort([func,] arr1, …)

Öğeleri sıralama sonucu bir dizi döndürür arr1 azalan sırada. Eğer... func fonksiyon belirtilir, sıralama sırası fonksiyonun sonucu ile belirlenir func dizi (diziler) elemanlarına uygulanır.

Örnek:

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

Hakkında daha fazla bilgi için arrayReverseSort yöntem, görmek Dizilerle çalışmak için işlevler bölme.

Orijinal makale