У меня есть следующий столбец с именем int_calcs в снежинке, который представляет собой json, сохраненный в виде строки:
int_calcs =
'{
"frequency": {
"SA": {
"ER": 1.00,
"EXR": 0.18667007686333767,
"CW": 0.18667007686333767
},
}'
Я пытаюсь вывести ER (1.00) в dbt, но у меня возникают проблемы. Я думаю, мне нужно использовать parse_json (так как это строка).
Я пытался:
SELECT
lower(cast(json_extract_path_text(parse_json(int_calcs), '$.frequency.SA.ER') as float)) as ER,
это не приводит к сбою, но не проходит мои тесты dbt_utils.at_least_one (поэтому синтаксис правильный, но он не берет значение).
Любые советы о том, как заставить это работать?
Я тоже пробовал в таком формате:
lower(cast(parse_json(int_calcs:frequency:SA:ER::number))) as ER,
без синтаксического успеха.
Заранее спасибо!
С использованием:
CREATE OR REPLACE TABLE tab(int_cals string)
AS
SELECT '{
"frequency": {
"SA": {
"ER": 1.00,
"EXR": 0.18667007686333767,
"CW": 0.18667007686333767
},
}
}';
SELECT PARSE_JSON(int_cals):frequency:SA:ER::NUMBER AS er
FROM tab;
-- ER
-- 1
Вместо этого можно использовать
TRY_PARSE_JSON()
в случае мусорных данных, чтобы предотвратить сбои.