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
2026_devsumi_ozono.pdf
o3
3
530
.NET WebAssemblyで実現するクライアントサイドAI推論:NuGetからViteまで、2つのエコシステムを繋ぐビルド戦略
yamachu
0
260
EventBridge に「合流」はない ― サーバーレスのワークフローを育てるということ / No Join in EventBridge
yusukeshimizu
2
300
C#未経験の僕がAIに読めるコードを書かせるまで
maguroalternative
0
110
「ピッケル本」日本語版は4.0(第6版)が出版されるべき / pickaxe4-nagoyark05
kakutani
2
220
人間はどの意思決定を手放せるのか
kawasima
15
7.5k
ソフトウェアDNAとクラウドエージェントのススメ
cloudace
0
120
2026-09-18 gotanda.sre Terraformで複数環境作ったり、複数Stateに分割したりそれとTerragrunt / Terraform multi envs and multi states
masasuzu
3
620
目の前の楽しいが人生を変える - コミュニティの螺旋の歩き方と楽しむコツ / change your life
soudai
PRO
5
650
30座EKS, 180次升級淬煉的EKS Upgrade Skill 的歷程
eric8230
0
190
aws-iot-platform-architecture-use-cases.pdf
ma2shita
0
400
バイブコーディング時代のWebアプリ開発入門~Cloud Runで学ぶセキュアなビルドとデプロイ
waiwai2111
1
140
Featured
See All Featured
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
240
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
810
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Crafting Experiences
bethany
1
350
Accessibility Awareness
sabderemane
1
210
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
430
Are puppies a ranking factor?
jonoalderson
2
3.9k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
280
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
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