Supposons que j'obtienne une table temporaire avec un champ est un tableau, comment la transformer en plusieurs lignes?
Avec PostgreSQL, cela peut être fait avec UNNEST http://sqlfiddle.com/#!15/21673/19
WITH x AS (SELECT ARRAY[1,3,2] AS arr)
SELECT UNNEST(arr) FROM x
Exécutez la même requête dans BigQuery dit Erreur de syntaxe: mot-clé inattendu UNNEST à [3: 8]
il semble que dans BigQuery l'UNNEST ne peut être placé qu'après la clause FROM,
Ensuite, j'ai essayé ces derniers:
WITH x AS (SELECT ARRAY[1,3,2] AS arr)
SELECT * FROM UNNEST(x)
celui-ci dit UNNEST ne peut pas être appliqué sur une table: x à [3:22] ; ou ca
WITH x AS (SELECT ARRAY[1,3,2] AS row)
SELECT * FROM UNNEST(x.arr)
dit UNNEST ne peut pas être appliqué sur une table: x.arr à [3:22]
BTW, la table temporaire actuelle x ressemble à ceci:
WITH x AS (SELECT ARRAY[1,2] AS row)
SELECT * FROM x
EOF
+--------------+
| row |
+--------------+
| [u'1', u'2'] |
+--------------+
alors que je m'attends à le transformer en lignes de valeur:
+-----+
| row |
+-----+
| 1 |
| 2 |
+-----+
Encore une autre version - avec UNNEST "explicite" impliqué
WITH x AS (SELECT ARRAY[1,3,2] AS arr)
SELECT arr_item FROM x, UNNEST(arr) as arr_item
Vous pouvez faire un tel aplatissement en faisant CROSS JOIN des éléments d'arr avec chaque ligne de x, c'est-à-dire.
WITH x AS (SELECT ARRAY[1,3,2] AS arr)
SELECT arr FROM x, x.arr
ou vous pouvez l'écrire plus explicitement en tant que CROSS JOIN au lieu d'utiliser une virgule
WITH x AS (SELECT ARRAY[1,3,2] AS arr)
SELECT arr FROM x CROSS JOIN x.arr