Aracılığıyla paylaş


stack tablo değerli oluşturucu işlevi

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime

expr1, ..., exprN öğesini satırlara ayırırnumRows.

Söz dizimi

stack(numRows, expr1 [, ...] )

Bağımsız değişkenler

  • numRows INTEGER: Üretilen satır sayısını belirten 0'dan büyük bir değişmez değer.
  • exprN: Herhangi bir türde bir ifade. Herhangi birinin exprN türü, türüyle expr(N+numRows)eşleşmelidir.

Döndürülenler

Bu işlev tarafından üretilen sütunları içeren numRows bir satır kümesimax(1, (N/numRows)). Tamamlanmamış bir satır s ile NULLdoldurulur.

Varsayılan olarak, üretilen sütunlar olarak adlandırılır col0, … col(n-1).

stackyan tümcesine VALUESeşdeğerdir.

  • Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks Runtime 12.1 ve öncesi:

    stack yalnızca SELECT listesine bir ifadenin kökü olarak veya bir LATERAL VIEW'den sonra gelecek şekilde yerleştirilebilir. İşlevi SELECT listeye yerleştirirken, aynı SELECT listede veya UNSUPPORTED_GENERATOR başka bir oluşturucu işlevi olmamalıdır. MULTI_GENERATOR yükseltilir.

  • Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 12.2 LTS ve üzeri:

    LATERAL VIEW yan tümcesinden veya SELECT listesinden çağrı kullanım dışı bırakıldı. Bunun yerine table_referencestackçağırabilirsiniz.

Örnekler

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks Runtime 12.1 ve öncesi:

> SELECT 'hello', stack(2, 1, 2, 3) AS (first, second), 'world';
 hello 1  2    world
 hello 3  NULL world

> SELECT 'hello', stack(2, 1, 2, 3) AS (first, second), stack(2, 'a', 'b') AS (third) 'world';
 Error: UNSUPPORTED_GENERATOR.MULTI_GENERATOR

-- Equivalent usage of VALUES
> SELECT 'hello', s1.*, s2.*, 'world'
    FROM VALUES(1, 2), (3, NULL) AS s1(first, second),
         VALUES('a'), ('b') AS s2(third);
 hello  1   2       a   world
 hello  3   NULL    a   world
 hello  1   2       b   world
 hello  3   NULL    b   world

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 12.2 LTS ve üzeri:

> SELECT 'hello', s.*, 'world'
    FROM stack(2, 1, 2, 3) AS s(first, second);
 hello 1  2    world
 hello 3  NULL world

> SELECT 'hello', s1.*, s2.*, 'world'
    FROM stack(2, 1, 2, 3) AS s1(first, second),
         stack(2, 'a', 'b') AS s2(third);
  hello 1  2    a  world
  hello 3  NULL a  world
  hello 1  2    b  world
  hello 3  NULL b  world