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
180
第109回 雲勉【オンライン】Dataformってどう使うの?を調べてみた
下記、勉強会での資料です。
https://youtu.be/qjsn8bhjUjM
iret.kumoben
July 21, 2023
Tweet
Share
More Decks by iret.kumoben
See All by iret.kumoben
第146回 雲勉 BLEAを眺めてCDKの書き方について学ぶ
iret
1
45
第145回 雲勉 Amazon ECSでサービス間通信する方法を調べてみよう
iret
0
39
第144回 雲勉 Amazon Aurora Serverless v2の基礎とアーキの裏側を覗いてみる
iret
0
84
第143回 雲勉 [New Relic]インフラストラクチャ監視と気をつけたいポイント
iret
0
39
第142回 雲勉 AWS Backupの復元テストで自動化できること・できないこと
iret
0
84
第141回 雲勉 Amazon Inspectorによる脆弱性管理~ECR コンテナイメージ編~
iret
0
200
第2回 雲勉LT大会 パブリッククラウドのサーバレスサービスの違いを調べてみた
iret
0
24
第2回 雲勉LT大会 AWS Control Tower の「コントロール」って何? という謎から AWS Control Tower を知る
iret
0
23
第2回 雲勉LT大会 AWS/Google Cloud/Wasabi ストレージサービスを比較したい
iret
0
44
Other Decks in Technology
See All in Technology
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
180
OCI Security サービス 概要
oracle4engineer
PRO
0
6.5k
VideoMamba: State Space Model for Efficient Video Understanding
chou500
0
190
DynamoDB でスロットリングが発生したとき_大盛りver/when_throttling_occurs_in_dynamodb_long
emiki
1
420
AWS Lambda のトラブルシュートをしていて思うこと
kazzpapa3
2
180
社内で最大の技術的負債のリファクタリングに取り組んだお話し
kidooonn
1
550
New Relicを活用したSREの最初のステップ / NRUG OKINAWA VOL.3
isaoshimizu
3
620
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
110
インフラとバックエンドとフロントエンドをくまなく調べて遅いアプリを早くした件
tubone24
1
430
プロダクト活用度で見えた真実 ホリゾンタルSaaSでの顧客解像度の高め方
tadaken3
0
150
20241120_JAWS_東京_ランチタイムLT#17_AWS認定全冠の先へ
tsumita
2
290
【令和最新版】AWS Direct Connectと愉快なGWたちのおさらい
minorun365
PRO
5
760
Featured
See All Featured
Producing Creativity
orderedlist
PRO
341
39k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
How to Think Like a Performance Engineer
csswizardry
20
1.1k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
109
49k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Optimising Largest Contentful Paint
csswizardry
33
2.9k
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
RailsConf 2023
tenderlove
29
900
Git: the NoSQL Database
bkeepers
PRO
427
64k
Speed Design
sergeychernyshev
25
620
Bash Introduction
62gerente
608
210k
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