Снежинка DBT Json в строковом формате

У меня есть следующий столбец с именем 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,

без синтаксического успеха.

Заранее спасибо!

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

С использованием:

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() в случае мусорных данных, чтобы предотвратить сбои.

Adam Kipnis 18.04.2023 17:27

Другие вопросы по теме