JSONをTreasureDataにスムーズにいれたい
TreasureDataを利用していて一番むずかしいのがJSONファイルの扱いである。
以下のタイプのようなJSONファイルを入れることは簡単だ。
そのままDataConnectorのJSON parserを使ってくれればいい。
{ "name": "Tanaka", "age": 26 } { "name": "Suzuki", "age": 58 }
実際にデータが投入されると次のようになる。
time | record |
---|---|
1586071993 | { "name": "Tanaka", "age": 26 } |
1586071993 | { "name": "Tanaka", "age": 26 } |
だけど次のようなJSONだと途端に難しくなる。
[ { "name":"Tanaka", "age":26 }, { "name":"Suzuki", "age":58 } ]
これをTreasureDataに入れると1カラムに全てのJSONファイルが入ってしまう。
time | record |
---|---|
1586071993 | [ { "name": "Tanaka", "age": 26 },{ "name": "Suzuki", "age": 58 }] |
正直取り回しが悪い。 こういったときはpytdというTreasureDataのpythonライブラリを使うと良い。
import pytd.pandas_td as td import pandas as pd con = td.connect(apikey=<Your API key>) df = pd.read_json('path/to/json=file') td.to_td(df, 'your_databaes.your_table', con, if_exists='replace')
PandasでJSONを読み込み、それをCSVに変換してUploadしている。
この方法を使うとこんな感じでデータがUploadされる。
time | name | age |
---|---|---|
1586071993 | Tanaka | 26 |
1586071993 | Suzuki | 58 |
個人的にはこっちのほうがスッキリしていて好きである。 TreasureDataへのJSONの投入に悩んでいる人はこれを試してほしい。