Вместо использования split
и regexp_extract
вы также можете перейти в UDF в JS, что позволяет легко анализировать:
CREATE TEMPORARY FUNCTION parse(json STRING) RETURNS ARRAY<STRING>
LANGUAGE js AS """
p = JSON.parse(json);
arr = [];
for (var key in p) {
if (p.hasOwnProperty(key)) {
arr.push(key + "|" + p[key]);
}
}
return arr;""";
WITH foo AS (SELECT '''{"X":"2","Y":"1"}''' AS something)
SELECT parsed FROM foo, UNNEST(parse(something)) AS parsed
-
Row parsed
1 X|2
2 Y|1
Однако, это больше кода / SQL и, вероятно, немного излишним для того, что вам нужно. Я просто хотел дать вам еще один вариант, так как я не большой поклонник использования регулярных выражений!