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
Modern Data Stack初心者がSnowflake DCRの構築をした話
Search
Makoto Shinohara
November 12, 2023
Technology
540
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Modern Data Stack初心者がSnowflake DCRの構築をした話
Makoto Shinohara
November 12, 2023
More Decks by Makoto Shinohara
See All by Makoto Shinohara
ドキュメントサイト生成フレームワークのすゝめ
synohara
0
150
Event-table Service Metricsについてまとめてみた
synohara
0
150
Snowake DCRをTerraformで構築したお話/Snowake DCRの未来
synohara
0
210
Other Decks in Technology
See All in Technology
「図書館」という名前のままでいいのか -Code4Lib JAPANカンファレンス2026 アンカンファレンス報告- / Code4Lib JAPAN Conference 2026: Unconference Report
ykiyota
0
160
目の前の楽しいが人生を変える - コミュニティの螺旋の歩き方と楽しむコツ / change your life
soudai
PRO
4
380
【視聴者参加型!】AWSセキュリティアンチパターンクイズ
syoshie
1
490
omasushiというライブラリを作った
polidog
PRO
0
190
20260906 「AWS運用入門」著者が教える、運用業務への生成AI活用入門
masaruogura
0
260
DEFCON34-Write-up_HYCu-MYCu
daikiokazaki
0
140
When Does a Local Qwen Start to Break
morshoto
0
200
AI時代に顧客へ最速で価値を 届けるための試行錯誤 〜「AI × マネジメント」領域におけるmentoのケース〜
posterkeisuke
0
110
AI活用の現在地、 ちゃんと見えてますか?/XPfest-2026
visional_engineering_and_design
0
180
家のリアーキテクト・リファクタリング
suguruooki
0
100
The Agent Builder Loop from Daily Work to OSS
minorun365
PRO
3
120
Microsoft 365 Copilot chat -tekoälypalvelun tietosuojaongelmat
hponka
0
650
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
247
13k
Tell your own story through comics
letsgokoyo
1
1.1k
WENDY [Excerpt]
tessaabrams
13
39k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Marketing to machines
jonoalderson
1
5.8k
Ethics towards AI in product and experience design
skipperchong
2
370
WCS-LA-2024
lcolladotor
0
820
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Statistics for Hackers
jakevdp
799
230k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
470
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
240
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
540
Transcript
2023/11/10 Modern Data Stack初心者が Snowflake DCRの構築をした話 KDDIアジャイル開発センター 開発4部 篠原 誠
自己紹介 KDDIアジャイル開発センター株式会社 データエンジニア 篠原 誠 KDDI株式会社入社後、KDDIアジャイル開発センター株式会社に出向 チャットボット開発や統計化位置情報分析基盤開発、KDDI研究所での対話AIプロジェクト参加などを経て、 現在はデータエンジニアとしてデータクリーンルームの開発に従事 KDDI Agile Development Center
Corporation KDDIアジャイル開発センター 開発4部 1
データクリーンルーム(DCR)とは 個人情報を含んでいるデータを中身の情報は見せずに結合して掛け合わせ分析を行うことができる技術及び それが実現できる環境 SnowflakeのDCRではSnowflakeの各種機能(Data Sharing, Stream/Task, Stored Procedure, Row Access
Policy etc…)を組み合わせて 許可ベースのクエリ実行フレームワークとして実現している KDDI Agile Development Center Corporation KDDIアジャイル開発センター 開発4部 2
Modern Data StackでDCR構築! KDDI Agile Development Center Corporation KDDIアジャイル開発センター 開発4部 3
技術スタック Data Cloud Snowflake Workflow Orchestration Snowflake Task Github Actions
主にdbtの呼び出しに使用 CI/CD Github Actions Transform/Data Modeling dbt Core IaC Terraform KDDI Agile Development Center Corporation KDDIアジャイル開発センター 開発4部 4
Workflow Orchestration データパイプラインの流れ 源泉データは別のSnowflakeアカウントからSecure Data Sharingを利用してシェア 自アカウント内へテーブルの内容をコピー → Snowflake Task
そのテーブルの内容をdbtで加工 → dbt Core on Github Actions (いい感じの絵をAIに作ってもらおうとしたけど失敗) KDDI Agile Development Center Corporation KDDIアジャイル開発センター 開発4部 5
DCR構築へのTerraformの活用 DCR構築を効率化するためにDCR構築の一連の処理をTerraformのModuleにまとめています 1 module "provider_init" { 2 source = "modules/provider_init"
3 ... 4 } 5 module "consumer_init" { 6 source = "modules/consumer_init" 7 ... 8 depends_on = [ 9 module.provider_init 10 ] 11 } 12 module "provider_enable_consumer" { 13 source = "modules/provider_enable_consumer" 14 ... 15 depends_on = [ 16 module.provider_init, 17 module.consumer_init 18 ] 19 } KDDI Agile Development Center Corporation KDDIアジャイル開発センター 開発4部 6
Terraformでクエリテンプレートの管理 DCRではクエリテンプレートをテーブルに登録してそれを使用する テンプレートの登録をSQLで実行すると大変 & 事故の元 Terraformで管理することにした KDDI Agile Development Center
Corporation KDDIアジャイル開発センター 開発4部 7
Terraformでクエリテンプレートの管理 クエリテンプレートの登録を行うSQLファイルを用意 INSERT INTO ${db_name}.TEMPLATES.DCR_TEMPLATES ( party_account, template_name, template, dimensions,
template_type ) VALUES ( '${consumer_acct}', '${template_name}', $$${template}$$, '${dimentions}', 'SQL' ); KDDI Agile Development Center Corporation KDDIアジャイル開発センター 開発4部 8
Terraformでクエリテンプレートの管理 yamlファイルにクエリテンプレートの設定を記述 1 templates: 2 - template_name: customer_overlap 3 template:
| 4 select 5 {% if dimensions %} 6 identifier({{ dimensions[0] }}) 7 {% for dim in dimensions[1:] %} 8 , identifier({{ dim }}) 9 {% endfor %} 10 , {% endif %} 11 count(distinct p.email) as overlap 12 from 13 {{ app_data | sqlsafe }}.cleanroom.provider_customers_vw p, 14 {{ consumer_db | sqlsafe }}.{{ consumer_schema | sqlsafe }}.{{ consumer_table | sqlsafe }} at(time 15 where 16 c.{{ consumer_join_field | sqlsafe }} = p.email 17 ... 18 allowed_columns: 19 - c.petsc.zip 20 - p.status 21 - p.age_band 22 template_type: SQL KDDI Agile Development Center Corporation KDDIアジャイル開発センター 開発4部 9
Terraformでクエリテンプレートの管理 Terraformで読み込む resource "snowsql_exec" "templates" { for_each = { for
i in local.templates : i.template_name => i } create { statements = templatefile("${path.root}/tftpls/insert_templates.sql.tftpl", { db_name = var.source_database_name consumer_acct = var.consumer_account_locator, template_name = each.value.template_name, template = each.value.template, dimentions = join("|", flatten(each.value.allowed_columns)) }) } delete { statements = "DELETE FROM ${var.source_database_name}.TEMPLATES.DCR_TEMPLATES WHERE TEMPLATE_NAME = '${each.value.t } } KDDI Agile Development Center Corporation KDDIアジャイル開発センター 開発4部 10
まとめ Modern Data Stackを駆使してDCRの構築に挑戦しました Terraformを活用して基盤構築を効率化 DCRの構築 クエリテンプレートの管理 Modern Data Stackを活用したDCRの構築は様々な技術を組み合わせた総合格闘技戦
今後もSnowflakeの進化に注目していきます! KDDI Agile Development Center Corporation KDDIアジャイル開発センター 開発4部 11
None