いつも忘れるので書いておきます。導入企業は増えてますが、AWSみたく数百円程度で自分の環境が作れないので(ミニマム100万~ぐらいのサービスです)誰かしらに環境を借りないと検証が出来ないのが、アナリスト視点だとちょっと辛いですね。

標題の件について、大抵はS3等の外部のサービスから、TDまでデータを持ってくる時が多いのですが、わりとCSVを多用している会社も多く、そんなときの方法です。

公式マニュアル見たほうが早いわ!って方は以下を参考にしてください。またリンクが度々変わるので(謎)リンク切れの場合はTOPから検索をお願いします。
https://support.treasuredata.com/hc/en-us/articles/360001495428-Bulk-Import-from-CSV-files
https://support.treasuredata.com/

TD Toolbeltのインストール

Treasure Data Toolbeltを以下URLからインストールします。Windows、Mac、Linuxなどに対応しています。

http://ybi-toolbelt.idcfcloud.com/

初期設定:td.confファイルの作成

毎回パスワードを入れるのは面倒なのでローカルにファイルを作成し、こいつを読みに行かせます。

WEBコンソールに入る為のアドレスとパスワードを聞かれるので入力。

するとtd.confという設定ファイルが作成されます。Windowsの場合ユーザー直下に作成される模様。同一PCで複数人が共有PCとして使っているとルートに作っちゃうとヤバいからかしら。保存場所の変更方法が謎なので分かったら追記します。

尚、ファイルの中身は以下の通りとなっており、APIキーにはtreasureのMyアカウント内にあるMaster keyが設定される。

ヘルプを確認

help:allコマンドで確認できる。疑問はググれば大抵出てくるのですがtreasureネタはそもそも少なく、豊富なのは英語の公式ドキュメント等になるので、まよったらhelpコマンドから解決するのもいいかと思います。

結果↓↓

アクセス可能なDBの確認

db:listで権限をもらっているDBを確認できます。

結果↓↓

td import:jar_update

後で使うのでjarファイルを最新にしておきます。

DBとテーブルの作成

すでに作っている場合は不要ですが必要に応じて空箱を用意しておきます。

この際通常のDWHでは先にカラムの名称や型を定義しておくことが多いですが、TDの場合この時点では特に不要です。created.となるので次に進みます。

CSVをimportする – オプションの確認

どのプラットフォームでもimportするとき、いくつかのオプションを引数として設定するかと思います。ヘルプコマンドで確認してみましょう。

import:autoの場合↓↓ ※見づらいので展開してください※

import:prepareの場合↓↓ ※見づらいので展開してください※

import:prepareでimportする

ではローカルマシン上にある複数CSVをアップロードします。TSVの場合は引数のオプションにその旨を記載するだけです。

step1:セッションの作成

どのDBのどのTBにimportするよ。というのを任意のセッション名(t_session)を付けて定義しておきます。変数的なものだと考れば良いと思います。

step2:データの準備

CSVそのままのデータではTDが「よろしく」してくれないのでローカル上で変換をかませる必要があるとのこと。以下を実行するとmsgpack.gzというものが同じディレクトリ上に作成される。

尚トレジャーの仕様上timeカラムがないとimport出来ないのでprepare時に作成しておけばよい。

–time-value の指定方法はいくつかありますが、今回は第一引数にUnixタイムスタンプを直接して指定しました。変換ジェネレーターなどを使うか。Windowsの場合はpowershellで、UNIXTimeの開始日から現在時刻を引いてあげればよい。

また、データ型の指定は–column-types オプションで一つづつ指定できる。
今回はめんどくさいので –all-string で全部文字列で投入して、必要に応じてSQLでCASTする方式に

※TotalSecondsが現在のUNIXTime

第二引数はパーティションしたい数を指定します。一体幾つが最適なのだろう・・・という人は是非検証をお願いします。

step3:upload

その名の通りuploadする。送り先はstep1で定義したsession名を指定。

step4:import

uploadしたらimportです。

この後コミットしますが、running中なので、すべて完了してからコミットする。

進行状況はtd job:showコマンドで確認できるが、オプションの引数に以下の頭文字を入れると詳しく教えてくれる。

Statusがsuccessに変わったらコミットする。

step5:commit

最後にコミット

以上で指定したテーブルにCSVファイルが作成されているはずです。

ターミナル上でもテーブルの確認は行えますが、あまりイケてないので、WEBコンソールかSQLクライアント等でlimit句あてて希望の形にimportが行えているか確認してみてください。

以上です。