0
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?

Dataformの設定〜実行までやってみた

Posted at

今回試すこと

  • Dataform利用までの設定をしてみる

  • データ操作処理を作成/実行してみる

    1. リポジトリ作成
    2. ワークスペース作成
    3. コード作成/実行

Dataformの設定

今回はGoogleリファレンスを見ながら実施

初めて利用される際はAPI有効化が必要ですので、
Dataformを開いた画面でAPI有効化を実施ください。

1. リポジトリ作成

Dataformを利用するためには、レポジトリの作成、ワークスペースの作成、実際のワークフローの作成のプロセスを踏む必要があります。

ではまずはリポジトリを作成していきましょう。
リポジトリでは、Dataformで作成するコードが管理されます。

APIが有効化されていれば、Dataformのボタンを押すとこの画面が開きます。
スクリーンショット 2024-06-05 19.20.43.png

今回はお試しなので、こんな感じで設定します。
スクリーンショット 2024-06-05 19.27.06.png

無事レポジトリができましたね。これから作るコードがこの中で管理されていきます。
スクリーンショット 2024-06-05 19.30.57.png

2. ワークスペース作成

次にワークスペースを作成していきます。
ワークスペースとは実際コードを書いて開発したり、実際のワークフローを作成したりできる開発基盤です。

それでは上記の作成したレポジトリの中に移動しましょう。
左上の「開発ワークスペースを作成」をクリック。
スクリーンショット 2024-06-05 19.40.02.png

作りたいワークスペースの名前を入力して、作成を押下します。
スクリーンショット 2024-06-05 19.44.29.png

ワークスペースは数秒で作成されます。
スクリーンショット 2024-06-05 19.46.16.png

3. コード作成/実行

作成されたワークスペースに入って、Dataformで開発をしてみましょう。
スクリーンショット 2024-06-05 19.47.53.png

初めは何も入ってないので、とりあえず「ワークスペースを初期化」を押下して必要なフォルダをデフォルトで作成しましょう。
スクリーンショット 2024-06-05 19.49.03.png

SQLを作成する前にBigQueryにデータセットを作成しておきます。
今回は公開データセットから「bigquery-public-data.america_health_rankings.ahr」をCSVでエクスポートし、自分の作成したプロジェクト配下にインポートしてコピーしました。
スクリーンショット 2024-06-22 23.33.24.png
なお、公開データセットを利用する場合は以下を参照。

ここからDataformでコードを作成していきます。
今回は公開テーブルの指定したカラムを抽出する処理をDataformで作成してみます。

まず、コードを記載するためのsqlxファイルを作成します。
フォルダエクスプローラのdefinitionsの3点リーダーを押下して、ファイルを作成します。ファイル名は末尾に".sqlx"を付けましょう。
スクリーンショット 2024-06-20 18.23.33.png

以下2つの.sqlxファイルを作成します。
・ahr_declaration.sqlx : テーブル定義用
・ahr_fillna.sqlx    : 抽出処理 
(※ファイル名がfiinaなのは処理とは関係ないです)
スクリーンショット 2024-06-26 17.36.41.png

ファイルを作成して、COMPILED GRAPHのタブを見てみると以下のようにそれぞれのファイル名のコンポーネントが作成されます。
スクリーンショット 2024-06-26 17.39.03.png

CODEタブに戻って以下のコードをそれぞれのファイルに記載します。

ahr_declaration.sqlx : テーブル定義用
ahr_declaration.sqlx
config {
  type: "declaration",
  database: "abstract-ring-404322",
  schema: "sample_dataform",
  name: "ahr"
}

ahr_fillna.sqlx    : 抽出処理
ahr_fillna.sqlx
select measure_name,state_name from ${ref("ahr")}   

コードが記載できたらもう一度COMPILED GRAPHを見てみましょう。
記載したコードに応じてワークフローが可視化されています。
スクリーンショット 2024-06-26 17.55.36.png

ではCODEのタブに戻って「X件の変更をCOMMIT」を押下して、COMMITしましょう。
Dataformではソース管理も行われるため、プログラムを変更した際はCOMMITしておきましょう。

COMMITしたら「PUSH TO DEFAULT BRANCH」と出るので、変更したコードをマスターブランチにPUSHしておきましょう。

それではワークフローを実行してみましょう。
ウィンドウ上部の「実行を開始」>「操作を実行」の順に押下すると下記画面が表示されます。今回は全体を実行してみるので、「ALL ACTION」を選択します。
それぞれの処理を個別に実行することも可能です。
スクリーンショット 2024-06-26 18.02.03.png

EXECUTIONから実行したジョブの結果を見ると失敗していました。
スクリーンショット 2024-06-26 18.06.01.png

エラーを見たところサービスアカウントへの権限が足りてないとのことなので権限を追加。(ジョブ実行の権限だけでなく、BigQueryのデータを参照できる権限も必要)
スクリーンショット 2024-06-26 18.09.36.png

権限を追加して再実行したところ成功しました。
今回SELECT分を処理として選んでしまったため、当画面で処理結果は見ることができませんでした。(この画面で抽出した結果が見れると思っていました、、、)
スクリーンショット 2024-06-26 18.16.45.png

実際に処理された結果を見てみたい場合は、今回の抽出処理部をINSERTやUPDATE分にしてみて、テーブルが実際に更新されるのを見てみるのが良いと思います。

まとめ

今回はDataformでコードを記載して実行まで実施してみました。
データ処理をsqlxベースで簡単に記載することができ、記載したコードベースで処理の流れも可視化されるのでBigQueryで複雑な処理をするケースでは有効だと思います。
複雑な加工処理を一連の流れで実施する必要がある際にはぜひ使ってみてください。

0
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
0
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?