Partilhar via


variant_explode_outer função com valor de tabela

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

Retorna um conjunto de linhas desaninhando variantExpr usando semântica externa.

Sintaxe

variant_explode_outer ( variantExpr )

Argumentos

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

Devoluções

Um conjunto de linhas composto pelos elementos do VARIANT ARRAYou as chaves e valores do VARIANT objeto. As colunas produzidas por variant_explode são:

  • pos INT
  • key STRING
  • value VARIANT.

Ao explodir um VARIANT objeto, a saída key e value as colunas representam as chaves e os valores do objeto. Ao explodir uma VARIANT matriz, a saída key é sempre nula e a coluna de saída value representa os elementos da matriz.

Se variantExpr for NULL, ou não for um VARIANT ARRAY com pelo menos um elemento ou um OBJECT com pelo menos um campo, uma única linha de s é produzida NULL. Para retornar nenhuma linha, neste caso, use a função variant_explode .

Exemplos

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

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

 -- null input
> SELECT value FROM variant_explode_outer(null) AS t(pos, key, value);
  null

-- Not an array or object input
> SELECT value FROM variant_explode_outer(parse_json('123')) AS t(pos, key, value);
  null

-- Using lateral correlation
> SELECT t.value AS outer, u.value AS inner
    FROM variant_explode_outer(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