Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
第109回 雲勉【オンライン】Dataformってどう使うの?を調べてみた
Search
iret.kumoben
July 21, 2023
Technology
0
300
第109回 雲勉【オンライン】Dataformってどう使うの?を調べてみた
下記、勉強会での資料です。
https://youtu.be/qjsn8bhjUjM
iret.kumoben
July 21, 2023
Tweet
Share
More Decks by iret.kumoben
See All by iret.kumoben
第164回 雲勉 Agent Development Kit と MCP Toolbox for Databases で MCP 連携してみた
iret
1
15
第163回 雲勉 CircleCIで複数リポジトリ間のパイプラインを連携する
iret
1
30
第162回 雲勉 比較して学ぶ AWS Amplify Gen 2
iret
0
43
第161回 雲勉 Amazon Kinesis Data Streams と Amazon Data Firehose を使ってみよう
iret
0
44
第160回 雲勉 それ、AWS Step Functions で置き換えれん?
iret
0
65
第159回 雲勉 Amazon Bedrock でブラウザを操作する AI エージェントを作ってみた
iret
0
77
第158回 雲勉 AWS CDK 入門 ~ プログラミング言語で書くインフラ Python 編 ~
iret
0
63
第157回 雲勉 AWSインフラ監視をNew Relicで行う際の個人的Tips
iret
0
61
第156回 雲勉 AWS on Windows入門
iret
0
95
Other Decks in Technology
See All in Technology
上長や社内ステークホルダーに対する解像度を上げて、より良い補完関係を築く方法 / How-to-increase-resolution-and-build-better-complementary-relationships-with-your-bosses-and-internal-stakeholders
madoxten
13
7.5k
Tenstorrent HW/SW 概要説明
tenstorrent_japan
0
390
脅威をモデリングしてMCPのセキュリティ対策を考えよう
flatt_security
4
1.5k
ユーザーのプロフィールデータを活用した推薦精度向上の取り組み
yudai00
0
270
CIでのgolangci-lintの実行を約90%削減した話
kazukihayase
0
140
vLLM meetup Tokyo
jpishikawa
1
200
AIにどこまで任せる?実務で使える(かもしれない)AIエージェント設計の考え方
har1101
3
1k
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
38k
TerraformをSaaSで使うとAzureの運用がこんなに楽ちん!HCP Terraformって何?
mnakabayashi
0
120
Create a Rails8 responsive app with Gemini and RubyLLM
palladius
0
110
AI技術トレンド勉強会 #1MCPの基礎と実務での応用
nisei_k
1
150
比起獨自升級 我更喜歡 DevOps 文化 <3
line_developers_tw
PRO
0
140
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
46
9.6k
Designing Experiences People Love
moore
142
24k
Writing Fast Ruby
sferik
628
61k
Why You Should Never Use an ORM
jnunemaker
PRO
56
9.4k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Into the Great Unknown - MozCon
thekraken
39
1.8k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
Producing Creativity
orderedlist
PRO
346
40k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
The Language of Interfaces
destraynor
158
25k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
650
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