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の投入に悩んでいる人はこれを試してほしい。