Partilhar via


variant_explode tablefunção valorada

Aplica-se a:Marque Sim Databricks SQL Marque Sim Databricks Runtime 15.3 e posterior

Retorna uma set de linhas desaninhando input.

No Databricks Runtime 16.1 e superior, esta função suporta invocação com parâmetros nomeados .

Sintaxe

variant_explode ( input )

Argumentos

  • variantExpr: Uma VARIANT expressão, representando um VARIANT objeto ou VARIANT ARRAY.

Devoluções

Um set de linhas composto pelos elementos do VARIANT ARRAYou pelas chaves e values do objeto VARIANT. Os columns produzidos pela variant_explode são:

  • pos INT
  • key STRING
  • value VARIANT.

Ao explodir um objeto VARIANT, a saída key e valuecolumns representam as chaves e values do objeto. Ao explodir uma matriz VARIANT, a saída key é sempre NULL, e valuecolumn representam os elementos da matriz.

Se input for NULL, ou não for um VARIANT ARRAY ou VARIANT objeto, nenhuma linha será produzida. Para produzir uma única linha de NULLvalues neste caso, use a função variant_explode_outer.

Exemplos

-- Simple example
> SELECT *
   FROM variant_explode(parse_json('[1, "a", {"b": "hello"}]'));
  pos  key  value
  ---  ---- -------------
    0  NULL 1
    1  NULL "a"
    2  NULL {"b":"hello"}

> SELECT *
    FROM variant_explode(parse_json('{"foo":1,"bar":"hello"}'));
  pos  key  value
  ---  ---- -------------
    0  bar  "hello"
    1  foo  1

-- Using lateral correlation
> SELECT t.value AS outer, u.value AS inner
    FROM variant_explode(parse_json('[[1, 2], [3, 4]]')) AS t,
    LATERAL variant_explode(t.value) AS u;
  outer inner
  ----- -----
  [1,2]     1
  [1,2]     2
  [3,4]     3
  [3,4]     4