Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
第109回 雲勉【オンライン】Dataformってどう使うの?を調べてみた
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
iret.kumoben
July 21, 2023
Technology
330
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
第109回 雲勉【オンライン】Dataformってどう使うの?を調べてみた
下記、勉強会での資料です。
https://youtu.be/qjsn8bhjUjM
iret.kumoben
July 21, 2023
More Decks by iret.kumoben
See All by iret.kumoben
第182回 雲勉 【Gemini 3.0 Pro】AI ベンチマーク徹底比較!他モデルに比べ優れている点まとめ
iret
0
130
第181回 雲勉 WEB制作者のちょっとした面倒をAWSで解決!Amazon S3とAWS Lambda活用術
iret
0
110
第180回 雲勉 Abuse report の調査・確認方法について
iret
0
130
第179回 雲勉 AI を活用したサポートデスク業務の改善
iret
0
180
第178回 雲勉 Amazon EKSをオンプレで! Amazon EKS Anywhere 実践構築ガイド
iret
1
150
第177回 雲勉 IdP 移行を楽に!Amazon Cognito でアプリへの影響をゼロにするアイデア
iret
0
140
第176回 雲勉 VPC 間サービス接続を考える!Private Service Connect 入門
iret
0
130
第175回 雲勉 Amazon ECS入門:コンテナ実行の基本を学ぶ
iret
0
180
第174回 雲勉 Google Agentspace × ADK Vertex AI Agent Engineにデプロイしたエージェントを呼び出す
iret
0
200
Other Decks in Technology
See All in Technology
【技術的負債conf】事業成長に伴う技術的負債の説明責任とAIによるモニタリング、認知的負債について
i35_267
2
1.6k
バイブコーディング時代のWebアプリ開発入門~Cloud Runで学ぶセキュアなビルドとデプロイ
waiwai2111
1
120
LTのテーマ どうきめてる?〜5つの型と私のやり方〜
yama3133
1
100
2026-09-11 【Snowflake World Tour Tokyo 2026】Snowflakeを起点に、AI Agentが自律稼働し続ける未来へ / Driving AI Agents with Snowflake
civitaspo
0
450
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
12k
空間オーディオで過去の 自分(ゴースト)と競うランニング 〜HealthKitのルートを足音に変える実装〜
nao_randd
0
220
AI 時代のスタートアップエコシステ厶から考究する技術的負債との向き合い方
m3m0r7
PRO
2
2.1k
白金鉱業Meetup Vol.25 アウトカムが二値のデータに対するCausal Impact
brainpadpr
0
200
日経電子版を支えていく Kasane Design System/fec_fukuoka
nikkei_engineer_recruiting
0
1.5k
アクセスキーこわい やめかたと漏らさない工夫
sassssan68
1
230
SQL文一行も書けない人事がCortexもろもろを使って人事業務を楽にしてみる
ponponmikankan
1
240
Snowflakeのコスト最適化を支えるアーキテクチャ設計
ktatsuya
1
1.6k
Featured
See All Featured
Are puppies a ranking factor?
jonoalderson
2
3.9k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
350
YesSQL, Process and Tooling at Scale
rocio
174
15k
Documentation Writing (for coders)
carmenintech
77
5.5k
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
Color Theory Basics | Prateek | Gurzu
gurzu
1
470
Tell your own story through comics
letsgokoyo
1
1.1k
First, design no harm
axbom
PRO
2
1.3k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
320
Mind Mapping
helmedeiros
1
360
Site-Speed That Sticks
csswizardry
13
1.5k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
450
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