Я столкнулся с проблемой, когда мне не удалось проанализировать одну строку JSON в BigQuery и заставить ее правильно отображаться.
Вот строка JSON
{"id":"ae7001c0-8728-4b90-a6a2 3e137983b320",
"seq":"20210315047",
"branch_id":"liketea0410",
"terminal_no":"liketea0410A",
"subtotal_":60,
"total":60,
"qty_subtotal":2,
"discount_subtotal":0,
"items":
[{"no":"10010002",
"name":"drink_1",
"current_qty":1,
"current_price":25,
"current_discount":0,
"discount_name":"",
"condiment":
[{"condiment_id":"e66b9b19-ec8e-4371-b4a8-b490b3996fe9",
"name":"test1",
"price":0},
{"condiment_id":"6ad55413-0706-4e74-b9a8-f6e6a7b8c2cf",
"name":"test2",
"price":0}]},
{"no":"10010002",
"name":"drink_2",
"current_qty":1,
"current_price":25,
"current_discount":0,
"discount_name":"",
"condiment":
[{"condiment_id":"c24188c0-3612-40d1-8bdf-0da423af94c2",
"name":"test_3",
"price":10},
{"condiment_id":"a5adcc2a-7c75-421c-b680-ca9392dfae12",
"name":"test_4",
"price":0},
{"condiment_id":"5446a39c-2eae-4217-bf9a-b77545552c1f",
"name":"test_5",
"price":0}]}
]}
В этой строке Json есть два заказа, и я хочу разделить их на 2 отдельные строки.
Мой ожидаемый результат
drink_name | condiment_1 | condiment_2 | condiment_3 |
drink_1 test_1 test_2 null
drink_2 test_4 test_5 test_3
До сих пор из моего собственного теста я смог PRASE_JSON одну строку и получить результат. Но если я использую столбец, содержащий тот же JSON, то bigquery возвращается с ошибкой. Есть идеи?
Заранее спасибо!
Вы можете рассмотреть ниже запрос.
WITH sample_data AS (
SELECT """
-- put your json here
""" json
)
SELECT * FROM (
SELECT JSON_VALUE(item, '$.name') drink_name,
JSON_VALUE(cond, '$.name') condiment,
offset + 1 AS offset
FROM sample_data,
UNNEST (JSON_QUERY_ARRAY(json, '$.items')) item,
UNNEST (JSON_QUERY_ARRAY(item, '$.condiment')) cond WITH offset
) PIVOT (ANY_VALUE(condiment) AS condiment FOR offset IN (1, 2, 3));
Результаты запроса
@JerryTai, пожалуйста, ознакомьтесь с кратким объяснением ниже. docs.google.com/spreadsheets/d/…
Большое спасибо! Это именно то, что мне нужно! Тем не менее, не могли бы вы немного подробнее рассказать о смещенной части и поворотной части в конце? Я немного смущен. Заранее спасибо!