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
250
第109回 雲勉【オンライン】Dataformってどう使うの?を調べてみた
下記、勉強会での資料です。
https://youtu.be/qjsn8bhjUjM
iret.kumoben
July 21, 2023
Tweet
Share
More Decks by iret.kumoben
See All by iret.kumoben
第155回 雲勉 サーバレスアーキテクチャを 用いたコスト重視 AI サービス
iret
0
41
第154回 雲勉 AWS Codeシリーズ盛り上げ隊 ~ Codeシリーズは砕けない ~
iret
0
38
第153回 雲勉 トラシューが秒で終わる新機能 Amazon Q Developer operational investigations
iret
0
53
第150回 雲勉 AWS AppSyncではじめるGraphQL体験
iret
0
46
第151回 雲勉 プロジェクトのドキュメントにおける課題をAmazon Bedrockで解決してみる
iret
0
62
第152回 雲勉 シームレスなマルチリージョンへの移行と検討 ~Amazon EKSとAWS Global Acceleratorを使用した環境〜
iret
0
58
第149回 雲勉 AWS ベストプラクティスの最新と実際 AWS Well-Architected
iret
0
90
第148回 雲勉 Web アプリケーションセキュリティ
iret
0
53
第147回 雲勉 Amazon CloudWatchをウォッチ!
iret
0
66
Other Decks in Technology
See All in Technology
AIエージェント入門
minorun365
PRO
33
19k
[OpsJAWS Meetup33 AIOps] Amazon Bedrockガードレールで守る安全なAI運用
akiratameto
1
130
AI自体のOps 〜LLMアプリの運用、AWSサービスとOSSの使い分け〜
minorun365
PRO
9
800
Amazon Aurora のバージョンアップ手法について
smt7174
2
180
1行のコードから社会課題の解決へ: EMの探究、事業・技術・組織を紡ぐ実践知 / EM Conf 2025
9ma3r
12
4.5k
ウォンテッドリーのデータパイプラインを支える ETL のための analytics, rds-exporter / analytics, rds-exporter for ETL to support Wantedly's data pipeline
unblee
0
140
Amazon Athenaから利用時のGlueのIcebergテーブルのメンテナンスについて
nayuts
0
110
AIエージェント時代のエンジニアになろう #jawsug #jawsdays2025 / 20250301 Agentic AI Engineering
yoshidashingo
8
4k
プルリクエストレビューを終わらせるためのチーム体制 / The Team for Completing Pull Request Reviews
nekonenene
1
690
What's new in Go 1.24?
ciarana
1
110
サバイバルモード下でのエンジニアリングマネジメント
konifar
17
5k
いまからでも遅くない!コンテナでWebアプリを動かしてみよう!コンテナハンズオン編
nomu
0
170
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
21
2.5k
Navigating Team Friction
lara
183
15k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.7k
Product Roadmaps are Hard
iamctodd
PRO
51
11k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Agile that works and the tools we love
rasmusluckow
328
21k
Optimizing for Happiness
mojombo
377
70k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
134
33k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
Raft: Consensus for Rubyists
vanstee
137
6.8k
Building Adaptive Systems
keathley
40
2.4k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
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