Код: Выделить всё
D describe some_table;
┌─────────────┬─────────────┬─────────┬─────────┬─────────┬─────────┐
│ column_name │ column_type │ null │ key │ default │ extra │
│ varchar │ varchar │ varchar │ varchar │ varchar │ varchar │
├─────────────┼─────────────┼─────────┼─────────┼─────────┼─────────┤
│ id │ BIGINT │ YES │ │ │ │
│ data │ JSON │ YES │ │ │ │
└─────────────┴─────────────┴─────────┴─────────┴─────────┴─────────┘
Код: Выделить всё
D select id, data from some_table;
┌────────┬──────────────────────────────────────────────────────────────────────────────────┐
│ id │ data │
│ int64 │ json │
├────────┼──────────────────────────────────────────────────────────────────────────────────┤
│ 1 │ {"type":"abc","purpose":"ad","ts":"...","userId":"","context":{"ip":"x.x.x.x",...│
│ 2 │ {"type":"abc","purpose":"search","ts":"...","userId":"ABCD1234","context":{"ip...│
│ 3 │ {"type":"defghi","purpose":null,"ts":"...","userId":"","context":{"ip":"x.x.x....│
...
└───────────────────────────────────────────────────────────────────────────────────────────┘
Код: Выделить всё
┌──────────┬─────────┬─────┬──────────┬─────────────┬──────────────────┐
│ type │ purpose │ ts │ userId │ context.ip │ context.sth.else │
├──────────┼─────────┼─────┼──────────┼─────────────┼──────────────────┤
│ abc │ ad │ ... │ │ │ │
│ abc │ search │ ... │ │ │ │
│ defghi │ null │ ... │ ABCD1234 │ │ │
└──────────┴─────────┴─────┴──────────┴─────────────┴──────────────────┘
Код: Выделить всё
D select unnest(data) from some_table limit 5;
Error: Binder Error: UNNEST() can only be applied to lists, structs and NULL
LINE 1: select unnest(data) from some_table limit 5;
^
Код: Выделить всё
D select unnest(from_json(data, '"JSON"')) from some_table limit 5;
Error: Binder Error: UNNEST() can only be applied to lists, structs and NULL
LINE 1: select unnest(from_json(data, '"JSON"')) from ...
^
- https://duckdb.org/2023/03/03/json.html
- https://www.linkedin.com/pulse/duckdb-u ... oyle-wo1dc
- https://motherduck.com/blog/analyze-jso ... using-sql/
В качестве альтернативы, если бы я мог преобразовать этот столбец JSON в столбец STRUCT, это позволило бы мне использовать функцию unnest. Но мне также не удалось найти никаких ссылок на этот вопрос в Интернете.
TL;DR – я ищу эквивалент pandas.json_normalize в DuckDB.
Подробнее здесь: https://stackoverflow.com/questions/781 ... e-split-ne
Мобильная версия