この記事では、embulk-input-google_spreadsheets入力プラグインを使用して、Google SheetsからTreasure Dataにデータをインポートする方法について説明します。
以下のトピックに進みます:
このコンテンツは古いため、今後更新されません。Treasure Dataでは、ネイティブのGoogle Sheetsインテグレーションの使用を推奨しています。
Treasure Dataの基礎知識
Embulkの基礎知識
EmbulkはJavaアプリケーションです。Javaがインストールされていることを確認してください。
Installing Bulk Data Importの手順に従ってください。
Embulkおよびembulk-output-tdプラグインがマシンにインストールされていること。
embulk-input-google_spreadsheetsプラグインをインストールするには、次のコマンドを実行します:
embulk gem install embulk-input-google_spreadsheetsEmbulkがGoogle Sheets APIに接続するには、さまざまな認証オプションが利用可能です。この例では、JSONキーファイルを必要とするauthorized_userメソッドを使用します。キーファイルはGoogle APIコンソールから取得できます。このキーファイルには、Google Sheets APIへの接続を許可する認証情報が含まれています。Embulkプラグインの実行に必要な3つのフィールドがあります。
* client_id
* client_secret
* refresh_token既存のGoogle APIプロジェクトからキーファイルをダウンロードする必要があります。プロジェクトを作成していない場合は、Googleが提供するこのウィザードを使用してプロジェクトを作成し、Google Sheets APIを有効にすることができます。Google Sheets APIウィザード
Credentials > Create Credentials > OAuth ClientID > Web Applicationに移動します。名前を入力して「Create」をクリックします。次の画面にクライアントIDとクライアントシークレットが表示されます。JSONキーファイルに必要なため、これらをコピーしてください。これらの手順を完了すると、client_idとclient_secretが提供されます。
Google OAuth 2.0 Playgroundからリフレッシュトークンを取得する必要があります。作成した認証情報の承認済みリダイレクトURIに、OAuth 2.0 PlaygroundリダイレクトURI(https://developers.google.com/oauthplayground)を追加する必要があります。
- Google OAuth 2.0 Playgroundで使用する認証情報を編集するには、鉛筆アイコンを選択します。

- Authorized Redirect URIフィールドに、Auth PlaygroundのURL: https://developers.google.com/oauthplaygroundを入力します。 Enterキーを押して、「保存」を選択します。

必要な残りの認証情報はリフレッシュトークンです。リフレッシュトークンを取得する1つの方法は、Google OAuth 2.0 Playgroundで利用可能なGoogle OAuth 2.0 Playgroundを使用することです。
右上の歯車アイコンを選択し、「Use your own OAuth credentials」を選択してください。OAuth Client IDとOAuth Client secretフィールドに、Google APIコンソールから取得した認証情報を挿入します。
左側のAPIリストから、Google Sheets API v4を選択します。次に、Step 2. - Exchange authorization code for tokensに進みます。「Exchange authorization code for tokens」ボタンを押すと、Refresh TokenとAccess Tokenフィールドが入力されます。リフレッシュトークンフィールドの値は、Embulkが必要とするJSONキーファイルに記録する必要がある値です。JSONキーファイルのすべてのコンポーネントが収集されたら、Embulkの設定を開始する準備が整いました。JSONキーファイルの形式は次のとおりです:
{
"client_id": "xxxxxxxxxx",
"client_secret": "xxxxxxxxxx",
"refresh_token": "xxxxxxxxxx"
}お気に入りのテキストエディターを使用して、入力(Google Sheets)と出力(TD)のパラメーターを定義するEmbulk設定ファイルを作成します。
以下の例では、必要なJSONキーファイルがインラインで使用されています。追加のパラメーターの詳細や他の例については、Embulk Input Google Sheetsを参照してください。
プラグインの実行に必要なフィールドは、spreadsheets_urlとworksheet_titleです。インポートしようとしているシートの関連する詳細を編集してください。出力セクションにも同様に適用され、Treasure Dataに出力されます。
この例では、設定ファイルで使用されている詳細に一致する関連テーブルをTreasure Dataですでに作成していることを前提としています。例えば、databaseはデータ用に作成されたデータベース、tableはそのデータベース内でデータを受信するテーブルです。
in:
type: google_spreadsheets
auth_method: authorized_user
json_keyfile:
content: |
{
"client_id": "xxxxxxxxxx",
"client_secret": "xxxxxxxxxx",
"refresh_token": "xxxxxxxxxx"
}
spreadsheets_url: https://docs.google.com/spreadsheets/d/1xP_ZBA-Or4sJ63Zj99-JreuAFGn7Y2gcUKd1vtwSqwM/edit#gid=0
worksheet_title: title
start_row: starting row
default_timezone: timezone to be used
null_string: '\N'
default_typecast: strict
columns:
- {name: color, type: string}
- {name: size, type: string}
- {name: type, type: string}
out:
type: td
apikey: xxxxxxxxxxxx
endpoint: api.treasuredata.com
database: dbname
table: tblname
time_column: datecolumn
mode: replace
#デフォルトでは、定義されていない場合、mode: appendが使用されます。このモードでは、インポートされたレコードがターゲットテーブルに追加されます。
#mode: replaceは、既存のターゲットテーブルを置き換えます
default_timestamp_format: '%d/%m/%Y'load.ymlに「auto_create_table: true」パラメーターを追加して、存在しないテーブルが自動的に作成されるようにします。
これは、.ymlファイルのauto_create_tableパラメーターの例です。
out:
type: td
apikey: your apikey
endpoint: api.treasuredata.com
database: dbname
table: tblname
time_column: created_at
auto_create_table: true
mode: appendロードジョブを実行する前に、TDでデータベースとテーブルを作成する必要があります。または、1) データベースを追加する必要がある場合、または2) .ymlファイルにauto_create_tableパラメーターを追加せずにテーブルを追加する必要がある場合は、次のTDコマンドを実行します:
$ td database:create dbname
$ td table:create dbname tblnameTD Consoleを使用してデータベースとテーブルを作成することもできます。
次のコマンドを実行して、インポートジョブを発行します:
embulk run load.ymlインポートジョブの実行時間は、インポートするデータのサイズによって異なります。ジョブが完了すると、Embulk設定ファイルで使用されたTDデータベースとテーブルにデータが反映されます。