Извлечение данных из сложного JSON в Big-query

У меня есть данные, которые выглядят так -

{aa_validation: null 
 propensity_overlap: {auc pscore overlap: 0.5993614555297898 
                      auc pscore treated: 1.000000000000001 
                      auc pscore control: 1.0000000000000004
                      auc pscore ROC: 0.7524618788923345} 
 feature_balance: {% features with post matching SMD < 0.1: 100.0 
                   % features with post matching SMD < 0.25: 100.0 
                   % features with SMD improved after matching: 84.21052631578947 
                   % features with SMD not significantly worsened: 100.0}}

Я хочу использовать Big Query, чтобы создать столбец для каждого из этих ключей, например, я получаю такой результат:

auc pscore overlap   auc pscore overlap...   % features with post matching SMD < 0.1   % features with post matching SMD < 0.25 ....

      0.32                    1                        50.0                      50.0

Я схожу с ума, используя Regex_extract, но, похоже, не могу заставить его работать. Может ли кто-нибудь помочь мне извлечь это с помощью Bigquery?

json недействителен

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

Ответы 1

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

Эта схема JSON не подходит для BigQuery. Вам нужно изменить ключи, чтобы иметь возможность извлечь их правильно.

Этот ключ, например, «% функций с пост-сопоставлением SMD < 0,1», не будет работать с функцией JSON_EXTRACT, как вы можете видеть здесь:

неверный ключ в примере запроса

Используйте разные ключи, и тогда вы сможете запускать такие запросы:

    SELECT JSON_EXTRACT(PARSE_JSON(json_field), "$.aa_validation") AS aa_validation,
JSON_EXTRACT(PARSE_JSON(json_field), "$.feature_balance") AS feature_balance,
JSON_EXTRACT(PARSE_JSON(json_field), "$.feature_balance.features_with_smd_improved_after_matching") AS smd_improved_after_matching,
FROM `qwiklabs-gcp-03-5570739e32d7.data.test2`

Использование преимуществ PARSE_JSON и JSON_EXTRACT в сочетании с запросами JsonPath.

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