はじめに
前回TalendをインストールしてCSVの読み取り・書き込みをしました。
この記事では、Talendで
- BigQueryでデータ取得
- CSV書き出し
をやってみようと思います。
BigQueryでデータ取得
事前準備
サービスアカウントの作成
今回は、BigQueryからデータを取得する際に
サービスアカウントを使って認証します。
まずは、GoogleCloud コンソールのサービスアカウントにアクセスし
サービスアカウント作成ボタンを押す。
サービスアカウント名を入力
ロールを追加
- BigQueryデータ閲覧者
- BigQueryジョブユーザ
を付与しました。
ロール追加で、サービスアカウントの作成は完了です。
サービスアカウントの鍵をダウンロード
サービスアカウント認証ではサービスアカウントに対応したJSONファイルを使用します。
作成したサービスアカウントの右端の3点リーダをクリックし、鍵を管理を選択
新しい鍵を作成を選択
JSONで作成
プロジェクトID.json
となっているファイルをこの後の記事でわかりやすくするためにservice-account.json
というファイル名に変更しました。
データの準備
今回は、一般公開データセットである気象データを使います。
tBigQueryInputの定義
BigQueryからデータを読み取るには、tBigQueryInputコンポーネントを使用します。
パレットからデザインワークスペースにドラッグ&ドロップします。
配置したコンポーネントをクリックし、設定を編集します。
設定には、以下の3つを設定していきます。
- Schema
- 認証方法
- Project ID
- SQL
認証方法は、3通り存在しますが
今回はサービスアカウントを使用します。
SQLを記述します。
気象データは、の列の説明についての詳細はこちら
東京 最高気温、最低気温、降水量のSQLを使わせていただきます。
SELECT
id
, date
, MAX(tmin) AS tmin
, MAX(tmax) AS tmax
, MAX(prcp) AS prcp
FROM
(
SELECT
tokyoweather.id
, tokyoweather.date
, IF ( tokyoweather.element = 'TMIN', tokyoweather.value / 10, NULL ) AS tmin
, IF ( tokyoweather.element = 'TMAX', tokyoweather.value / 10, NULL ) AS tmax
, IF ( tokyoweather.element = 'PRCP', tokyoweather.value / 10, NULL ) AS prcp
FROM
`bigquery-public-data.ghcn_d.ghcnd_2022` AS tokyoweather
WHERE
id = 'JA000047662'
)
GROUP BY
id,date
ORDER BY
date
- 認証方法
- Project ID
- SQL
の定義が完了しました。
schemaの定義
データ確認
tLogRowの定義
tLogRowを配置し、データが取得できるかを確認します。
モードをテーブルに変更
実行
データが取得できることを確認できました。
CSV書き出し
tFileOutputDelimitedの定義
Field Separator","
Include Headerにチェック、Sync columnsボタンを押しました。
実行してみる
データは取れたが、dateがおかしい??
id,date,tmin,tmax,prcp
JA000047662,15-07-0006,-1.0,,0.0
JA000047662,15-07-0007,0.4,,0.0
tBigQueryInputでのDate Patternでデフォルトのものが期待するものになっていなかったようです。
再度実行してみます。
無事想定したデータになりました!
id,date,tmin,tmax,prcp
JA000047662,2022-01-01,-1.0,,0.0
JA000047662,2022-01-02,0.4,,0.0
JA000047662,2022-01-03,0.5,,0.0
最後に
今回は、Talendで BigQueryでデータ取得→CSV書き出し
を試してみました。
無料のETLでBigQueryに対応してくれているのはありがたいですね、
データ加工についてまだまだやれてないので
次回はデータ加工についてまとめてやっていこうと思います。