2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

はじめに

前回TalendをインストールしてCSVの読み取り・書き込みをしました。

この記事では、Talendで

  • BigQueryでデータ取得
  • CSV書き出し

をやってみようと思います。

BigQueryでデータ取得

事前準備

サービスアカウントの作成

今回は、BigQueryからデータを取得する際に
サービスアカウントを使って認証します。

まずは、GoogleCloud コンソールのサービスアカウントにアクセスし
サービスアカウント作成ボタンを押す。

サービス-アカウント-–-IAM-と管理-–-data-transfer-–-Google-Cloud-コンソール (3).png

サービスアカウント名を入力

サービス-アカウントの作成-–-IAM-と管理-–-data-transfer-–-Google-Cloud-コンソール.png

ロールを追加

  • BigQueryデータ閲覧者
  • BigQueryジョブユーザ

を付与しました。

ロール追加で、サービスアカウントの作成は完了です。

スクリーンショット 2022-12-12 16.51.51.png

サービスアカウントの鍵をダウンロード

サービスアカウント認証ではサービスアカウントに対応したJSONファイルを使用します。

作成したサービスアカウントの右端の3点リーダをクリックし、鍵を管理を選択

サービス-アカウント-–-IAM-と管理-–-data-transfer-–-Google-Cloud-コンソール (1).png

新しい鍵を作成を選択

talend-bq-–-IAM-と管理-–-data-transfer-–-Google-Cloud-コンソール.png

JSONで作成

スクリーンショット 2022-12-12 17.10.00.png

プロジェクトID.jsonとなっているファイルをこの後の記事でわかりやすくするためにservice-account.jsonというファイル名に変更しました。

データの準備

今回は、一般公開データセットである気象データを使います。

tBigQueryInputの定義

BigQueryからデータを読み取るには、tBigQueryInputコンポーネントを使用します。

パレットからデザインワークスペースにドラッグ&ドロップします。

スクリーンショット 2022-12-12 16.27.10.png

配置したコンポーネントをクリックし、設定を編集します。

設定には、以下の3つを設定していきます。

  • Schema
  • 認証方法
  • Project ID
  • SQL

スクリーンショット 2022-12-12 16.30.11.png

認証方法は、3通り存在しますが
今回はサービスアカウントを使用します。

スクリーンショット 2022-12-12 16.33.23.png

スクリーンショット 2022-12-12 17.19.15.png

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

の定義が完了しました。

スクリーンショット 2022-12-12 18.00.10.png

schemaの定義

スクリーンショット 2022-12-12 18.05.35.png

データ確認

tLogRowの定義

tLogRowを配置し、データが取得できるかを確認します。

スクリーンショット 2022-12-12 18.21.57.png

モードをテーブルに変更

スクリーンショット 2022-12-12 18.22.17.png

実行

データが取得できることを確認できました。

スクリーンショット 2022-12-12 18.24.27.png

CSV書き出し

tFileOutputDelimitedの定義

Field Separator","Include Headerにチェック、Sync columnsボタンを押しました。

スクリーンショット 2022-12-12 18.27.44.png

実行してみる

データは取れたが、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でデフォルトのものが期待するものになっていなかったようです。

スクリーンショット 2022-12-12 18.34.46.png

スクリーンショット 2022-12-12 18.36.49.png

再度実行してみます。

無事想定したデータになりました!

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に対応してくれているのはありがたいですね、
データ加工についてまだまだやれてないので
次回はデータ加工についてまとめてやっていこうと思います。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?