Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
第109回 雲勉【オンライン】Dataformってどう使うの?を調べてみた
Search
iret.kumoben
July 21, 2023
Technology
0
310
第109回 雲勉【オンライン】Dataformってどう使うの?を調べてみた
下記、勉強会での資料です。
https://youtu.be/qjsn8bhjUjM
iret.kumoben
July 21, 2023
Tweet
Share
More Decks by iret.kumoben
See All by iret.kumoben
第180回 雲勉 Abuse report の調査・確認方法について
iret
0
49
第179回 雲勉 AI を活用したサポートデスク業務の改善
iret
0
36
第178回 雲勉 Amazon EKSをオンプレで! Amazon EKS Anywhere 実践構築ガイド
iret
1
56
第177回 雲勉 IdP 移行を楽に!Amazon Cognito でアプリへの影響をゼロにするアイデア
iret
0
60
第176回 雲勉 VPC 間サービス接続を考える!Private Service Connect 入門
iret
0
47
第175回 雲勉 Amazon ECS入門:コンテナ実行の基本を学ぶ
iret
0
78
第174回 雲勉 Google Agentspace × ADK Vertex AI Agent Engineにデプロイしたエージェントを呼び出す
iret
0
120
第173回 雲勉 ノーコードで生成 AI アプリを構築!Google Cloud AI Applications(旧 Vertex AI Agent Builder)入門
iret
0
95
第170回 雲勉 Lyria が切り拓く音楽制作の未来
iret
1
50
Other Decks in Technology
See All in Technology
Lessons from Migrating to OpenSearch: Shard Design, Log Ingestion, and UI Decisions
sansantech
PRO
1
150
AlmaLinux + KVM + Cockpit で始めるお手軽仮想化基盤 ~ 開発環境などでの利用を想定して ~
koedoyoshida
0
110
寫了幾年 Code,然後呢?軟體工程師必須重新認識的 DevOps
cheng_wei_chen
1
1.5k
Strands AgentsとNova 2 SonicでS2Sを実践してみた
yama3133
0
290
大企業でもできる!ボトムアップで拡大させるプラットフォームの作り方
findy_eventslides
1
840
30分であなたをOmniのファンにしてみせます~分析画面のクリック操作をそのままコード化できるAI-ReadyなBIツール~
sagara
0
180
IAMユーザーゼロの運用は果たして可能なのか
yama3133
2
490
多様なデジタルアイデンティティを攻撃からどうやって守るのか / 20251212
ayokura
0
490
年間40件以上の登壇を続けて見えた「本当の発信力」/ 20251213 Masaki Okuda
shift_evolve
PRO
1
140
SREには開発組織全体で向き合う
koh_naga
0
380
JEDAI認定プログラム JEDAI Order 2026 エントリーのご案内 / JEDAI Order 2026 Entry
databricksjapan
0
140
ウェルネス SaaS × AI、1,000万ユーザーを支える 業界特化 AI プロダクト開発への道のり
hacomono
PRO
0
140
Featured
See All Featured
Getting science done with accelerated Python computing platforms
jacobtomlinson
0
70
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.6k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
The Pragmatic Product Professional
lauravandoore
37
7.1k
sira's awesome portfolio website redesign presentation
elsirapls
0
86
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Practical Orchestrator
shlominoach
190
11k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
From π to Pie charts
rasagy
0
86
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
16
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Transcript
2023/07/20 第109回 雲勉 【オンライン】 Dataformってどう使うの?を調べてみた
0.講師⾃⼰紹介 2 n 秋葉 ⼤輔(あきば だいすけ) • クラウドインテグレーション事業部 開発第⼆セクション •
組み込み開発〜Webサービス開発まで様々な開発経験あり 最近はデータ基盤構築の案件が増えてきました • 2020年2⽉⼊社 • 5⽉にAWS全冠、Google Cloudもがんばります
アジェンダ 3 0. ⾃⼰紹介 1. Dataformとは︖ 2. 使ってみる 3. 構成を確認する
4. もう少し試してみる 5. まとめ 6. 質疑応答
1. Dataformとは︖ 4
Dataformとは何︖、、のまえに。 5
データ基盤のお話を少し 6
データ基盤構築依頼されるパターン 7 社内にデータは貯まってるけど、うまく活⽤できてない 今あるデータの動きを⾒えるようにしたい(可視化) オンプレのデータ基盤をクラウドに移⾏しよう︕
データ基盤のイメージ 8 データソース データレイク データ ウェアハウス データマート BIツール
データ基盤のイメージ 9 データソース データレイク データ ウェアハウス データマート BIツール データレイクにデータを 集める
データ基盤のイメージ 10 データソース データレイク データ ウェアハウス データマート BIツール データレイクに集まった データを加⼯する
データ基盤のイメージ 11 データソース データレイク データ ウェアハウス データマート BIツール 分析/可視化に合わせた形 に整形する
データ基盤のイメージ 12 データソース データレイク データ ウェアハウス データマート BIツール Dataformはデータの 加⼯・整形を⾏う
ETLツール
Dataformの解説 13 改めてGoogle Cloudの公式ドキュメントを確認 〜〜 Dataform は、データ アナリストが BigQuery でデータ変換を⾏う複雑な
SQL ワークフローを開発、 テスト、バージョン管理、スケジュール設定するためのサービスです。 Dataform を使⽤すると、データ統合の ELT(抽出、読み込み、変換)プロセスにおけるデータ変換を 管理できます。Dataform では、ソースシステムから抽出されたデータを BigQuery に読み込むと、明 確に定義されたテスト済みで⼀連のデータテーブルに変換できます。 〜〜 公式ドキュメントより︓https://cloud.google.com/dataform/docs/overview?hl=ja
Dataformの解説 14 Dataformの利⽤料⾦ Dataformは無料で利⽤できます。 ただし、BigQueryのクエリ実⾏などDataformが利⽤する 他のサービスには料⾦がかかります。 ※分析対象データのサイズが⼤きい場合は注意が必要︕ Dataformの開発⾔語 SQLXと呼ばれるSQLの拡張⾔語とJavascriptで記述
2. 使ってみる 15
2.使ってみる 16 まずはDataformを動かしてみます。 流れは次の通りです。 • リポジトリを作ります • ワークスペースを作ります • ワークスペースを初期化します
• SQLXファイルを作成します • 実⾏します
リポジトリを作ります 17 • リポジトリを作ります • ワークスペースを作ります • ワークスペースを初期化します • SQLXファイルを作成します
• 実⾏します
リポジトリを作成 18 リポジトリIDと リージョンを指定
リポジトリを作成 19 リポジトリ作成後に表⽰されるサービス アカウントに権限を付与しておく
ワークスペースを作ります 20 • リポジトリを作ります • ワークスペースを作ります • ワークスペースを初期化します • SQLXファイルを作成します
• 実⾏します
ワークスペースを作成 21 ワークスペースIDを指定
ワークスペースを初期化します 22 • リポジトリを作ります • ワークスペースを作ります • ワークスペースを初期化します • SQLXファイルを作成します
• 実⾏します
ワークスペースを初期化 23 ワークスペースを初期化
ワークスペースを初期化 24 Dataformのコードが ⾃動⽣成される
SQLXファイルを作成します 25 • リポジトリを作ります • ワークスペースを作ります • ワークスペースを初期化します • SQLXファイルを作成します
• 実⾏します
SQLファイルを作成 26 ワークスペースが作成される ファイルを作成を選択 ディレクトリ名含めて ファイル名を指定
SQLファイルを作成 27 コードを記述すると クエリ実⾏時の読み取り データ量が確認できる
実⾏します 28 • リポジトリを作ります • ワークスペースを作ります • ワークスペースを初期化します • SQLXファイルを作成します
• 実⾏します
Dataformを実⾏ 29 右上メニューの実⾏で 実⾏結果が確認できる
Dataformを実⾏ 30 タブメニューにある実⾏ を開始でワークフローを 実⾏する 全て実⾏ 選択実⾏ タグ指定実⾏
Dataformを実⾏ 31 EXECUTIONSで実⾏結果 が確認できる
Dataformを実⾏ 32
3. 構成を確認する 33
リポジトリとワークスペース 34 リポジトリとは・・・ Dataform側で管理されているGitリポジトリ githubと連携可能で複数のリポジトリが作成可能 ワークスペースとは・・・ リポジトリ内のコードを編集するためのクラウド上の開発環境 1つのリポジトリに対して複数のワークスペースを作成可能 リポジトリA ワークスペース1
ワークスペース 2
ディレクトリ/ファイル構成を確認 35 definitions SQLXファイルを配置するディレクトリ ベストプラクティスとしては、以下のサブディレクトリ を作った階層構造が推奨されている sources︓ データソース宣⾔とソースデータの基本的な変換を定義 intermediate︓ sourcesから読み取り、データ変換するテーブルを定義
BIツールなどから参照されないレイヤー output︓ BIツールなどから参照する出⼒テーブルを定義
ディレクトリ/ファイル構成を確認 36 includes リポジトリ内で再利⽤するJavascriptファイルを配置する ディレクトリ Javascriptで関数と定数を定義してSQLXファイルにて利⽤可能 カスタムのパッケージを作成したり、オープンソースの パッケージも利⽤可能
ディレクトリ/ファイル構成を確認 37 dataform.json Dataformの設定ファイル
SQLXファイルの構成を確認 38 SQLXファイルを⾒てみる 構成ブロック SQLX本⽂
SQLXファイルの構成を確認 39 構成ブロックとは・・・ テーブルの説明やカラム定義、ラベルなどのメタデータを記述するブロック 出⼒するテーブル名、テーブルタイプなども指定可能 データ品質テストの定義もここに記載する 特に指定するものが必要なければ省略可能 SQLX本⽂とは・・・ プレーンなSQLによる新しいテーブルの構成情報とその依存関係を定義する 権限付与などテーブル作成後のSQLオペレーションを実⾏可能
Javascriptを使⽤したコードの再利⽤が可能
構成ブロックを変更してみよう 40 configにdescriptionとtagsを追加してみる
構成ブロックを変更してみよう 41 ワークフロー実⾏にタグが追加され、ワークフロー実⾏後、テーブルの説明が追加された
SQL本⽂を使って依存関係を確認してみよう 42 他にもファイルを追加してみる テーブル参照にrefを利⽤
SQL本⽂を使って依存関係を確認してみよう 43
4. もう少し試してみる 44
3.もう少し試してみる 45 もう少しDataformでできることを探ってみます。 試してみることは以下の通りです。 • Javascriptを使ってみる • assertionを使ってみる • githubと連携してみる
• ワークフローを作成してみる
事前準備 46 • Javascriptを使ってみる • assertionを使ってみる • githubと連携してみる • ワークフローを作成してみる
ベストプラクティスに沿ってファイルを移動 47 出⼒⽤のテーブル定義 途中変換のテーブル定義 データソース定義
Javascriptを使ってみる 48 • Javascriptを使ってみる • assertionを使ってみる • githubと連携してみる • ワークフローを作成してみる
Javascriptを使ってみる 49 includes配下にファイルを追加 定数を定義して module.exportsで外部参照 できるように指定
Javascriptを使ってみる 50 constants.[変数名]で参照可能 クエリ上では変数展開される
Javascriptを使ってみる(定数編) 51 タグにも利⽤できる
Javascriptを使ってみる(関数編) 52 関数も利⽤可能
Javascriptを使ってみる(操作編) 53 テーブル未作成の場合 はエラーとなる
Javascriptを使ってみる(操作編) 54 ワークフロー実⾏で テーブルが作成される データリネージも確認 可能
Javascriptを使ってみる(操作編) 55 publishの第2引数に configの設定を指定する ことも可能
assertionを使ってみる 56 • Javascriptを使ってみる • assertionを使ってみる • githubと連携してみる • ワークフローを作成してみる
assertionを使ってみる 57 configにassertionsを 追加 メタデータにも追加される
assertionを使ってみる 58 assertionsに不適合な データがあるとワーク フローでエラー
assertionを使ってみる 59
assertionを使ってみる 60
githubと連携してみる 61 • Javascriptを使ってみる • assertionを使ってみる • githubと連携してみる • ワークフローを作成してみる
githubと連携してみる 62 接続先のgithubの 情報を設定
githubと連携してみる 63
githubと連携してみる 64 Dataformで 初回コミット
githubと連携してみる 65 Dataformでリモート ブランチにPush
githubと連携してみる 66 githubで 修正してコミット
githubと連携してみる 67 Dataformでリモート ブランチからPull
githubと連携してみる 68
githubと連携してみる 69
ワークフローを作成してみる 70 • Javascriptを使ってみる • assertionを使ってみる • githubと連携してみる • ワークフローを作成してみる
ワークフローを作成してみる 71
ワークフローを作成してみる 72 起動頻度をcron式で指定 起動対象を指定
ワークフローを作成してみる 73
ワークフローを作成してみる 74
5. まとめ 75
まとめ 76 ・Dataformは、データ基盤構築の中でデータ変換処理を管理するツール ・利⽤料⾦は無料(BigQueryのクエリ実⾏は別料⾦) ・SQLX+Javascriptで変換処理の実装ができる ・Google Cloud Console上でほとんどの操作が可能 ・データ変換だけでなく、ワークフローも設定可能 ・github/gitlabとの連携が可能
まとめ(個⼈的な⾒解) 77 ・VPC Service Controlsのサポートが欲しい →Access Context Managerを含めたIP制限ができないのでは︖ ・Source Repositoriesのサポートが欲しい
→gihub/gitlabだけ。。 ・assersionsの使いどころが難しい →単純なNot NullやUniqueのチェックは簡単に実装できるがより複雑な カスタムテストを作成しようとすると難しくなる印象
ご視聴ありがとうございました 78
7