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
こんなデータマートは嫌だ。どんな? / waiwai-data-meetup-202504
Search
Shun Takagiwa
April 10, 2025
Technology
3.8k
7
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
こんなデータマートは嫌だ。どんな? / waiwai-data-meetup-202504
Shun Takagiwa
April 10, 2025
More Decks by Shun Takagiwa
See All by Shun Takagiwa
LayerXの企業文化をデータがもっと強くする
shuntak
2
2.4k
たまたま出会った情熱を深掘りするキャリア戦略 〜ワクワクする働き方を探して〜
shuntak
3
2.7k
バクラクのデータドリブンな事業運営・爆速開発を支えるデータ分析基盤のこれまで・現在・これから
shuntak
1
9.5k
リリースから2年。爆速開発を支えるバクラクの組織とアーキテクチャ / AWS Dev Day 2022 Japan
shuntak
0
7.8k
バクラクのOCRで注目する指標について 〜精度の定義は一つじゃない〜 / Bakuraku OCR Metrics
shuntak
0
4.4k
LayerXインボイスのAI-OCRを支える非同期処理アーキテクチャ / AWS Dev Day Online Japan 2021
shuntak
0
8.2k
Introduction to Cordage v0.2 - Quorum Meetup Online
shuntak
0
120
Introduction to Cordage v0.2 (日本語) - blockchain.tokyo Online #3
shuntak
0
100
Dive Deep into Quorum - blockchain.tokyo #22
shuntak
0
730
Other Decks in Technology
See All in Technology
AI 時代のスタートアップエコシステ厶から考究する技術的負債との向き合い方
m3m0r7
PRO
2
2.1k
Claude Code本って、 読む必要あるの?
oikon48
2
460
新機種発売前に見直そう!端末移行で再ログインが要るアプリ・要らないアプリは何が違うのか 〜シームレスに再開できる設計と実装〜
zozotech
PRO
0
190
10Xに技術的負債をもたらした「2つの境界の歪み」その構造と解消への営み
10xinc
0
1.9k
幾何アルゴリズムで なめらかなピン操作を / iOSDC Japan 2026 / smoothpin
kazumanagano
0
350
TinyGo 開発サイクルを高速化する:Go で作るエミュレータ入門
zozotech
PRO
1
740
俺の仕事は AIに奪われないし、たぶんその BIも要らない
hikaruri
0
470
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
190
LTのテーマ どうきめてる?〜5つの型と私のやり方〜
yama3133
1
110
Reactの設計論
uhyo
24
13k
synctest時代のhttptest Go 1.27で変わるHTTPサーバテストの裏側 / go conference2026 synctest and httptest
budougumi0617
1
3k
AIエージェントの自己改善をどう設計するか / How to Design Self-Improvement for AI Agents
22mi
23
15k
Featured
See All Featured
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
280
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Music & Morning Musume
bryan
48
7.4k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
36k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
690
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
200
How to make the Groovebox
asonas
2
2.4k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Transcript
こんなデータマートは嫌だ。どんな? わいわいデータミートアップ 2025-04-10 高際 隼 @shun_tak
高際 隼 / Shun Takagiwa 株式会社LayerX アナリティクスエンジニア ▸ 2020年〜現在 -
バクラク事業を立ち上げ、AI-OCRの初期バージョンを開発 - 機械学習とデータ関連組織の立ち上げ、マネジメント - データ活用の推進に注力 (今) ▸ 2018〜2020年 - 株式会社LayerX 立ち上げ - ブロックチェーン事業 PM・TechLead 最近は Cline でのデータマート作りに挑戦中 結構いい感じになってきたかも 自己紹介 © LayerX Inc. 2
こんなデータマートは嫌だ。 どんな?
ドキュメントがない ▸ 誰が何のために作ったデータマートか分からない ▸ カラムの意味や、主キー (PK)・外部キー (FK) も不明瞭 ▸ でも意外と使われてる
▸ 「数字がズレてるんですけど」を直せない © LayerX Inc. 4
まじでドキュメント書こう ▸ シンプルでいいので書いてほしいものリスト - 目的・用途 - 想定する主な利用者 - 主キー (複合主キーなら組み合わせ)
- 外部キーの参照先 - 日本語 (自然言語) のカラム定義 3か月後の自分のためにもなるし、作ったデータマートの利用者も増えると思うよ! 特にLLMの時代はドキュメントが重要 © LayerX Inc. 5
例 項目 具体例 目的 EC部門の月次報告用で使う商品カテゴリ別の売上推移 想定利用者 EC部門のデータアナリスト カラム定義 year_month: 対象年月(YYYY-MM形式)(PK)
electronics_sales: 電化製品売上(円) fashion_sales: ファッション売上(円) food_sales: 食品売上(円) total_sales: 総売上(円) customer_count: 購入ユニークユーザー数 © LayerX Inc. 6
ドキュメントの下書き生成プロンプト (参考) 現時点では o3-mini など考えるモデルがオススメ。 {} は自分で編集する © LayerX Inc.
7
こんなデータマートは嫌だ。 どんな?
汎用性が低い ▸ 月次で集計済み ▸ カテゴリーでピボット済み © LayerX Inc. 9
月次で集計済み year_month total_sales customer_count 2025-01 10,500,000 3,240 2025-02 9,800,000 3,050
2025-03 11,200,000 3,420 ▸ 問題点 - 3月の売上急増の原因日(イベント日など)を特定できない - ある特定の週だけ売上が落ちていても月合計では気づけない - 「月初10日間」の前年同期比など、柔軟な分析ができない © LayerX Inc. 汎用性が低い 10
カテゴリーでピボット済み year_month total_sales electronics_sales fashion_sales food_sales 2025-01 10,500,000 5,200,000 3,800,000
1,500,000 2025-02 9,800,000 4,700,000 3,500,000 1,600,000 2025-03 11,200,000 5,500,000 4,100,000 1,600,000 ▸ 問題点 - 新カテゴリー「home_goods」追加時にカラム追加・スキーマ定義の変更が必要 - サブカテゴリー(スマホ、PC、AV機器など)の追加はどうする - 一つの商品が複数カテゴリーに所属する場合(電化製品かつギフト商品など)の対応が難しい © LayerX Inc. 汎用性が低い 11
汎用性を上げるコツ ▸ 目的と用途を明確にし、言われた通りに作らない ▸ 用途の範囲内で粒度を最小に保つ ▸ ピボットしない (横持ちしない) © LayerX
Inc. 12
目的と用途を明確にし、言われた通りに作らない 「今度の経営会議で月次の売上推移を報告するので、データ出して」という要望を受けた場合 ▸ なぜ必要? → 「マーケティング施策の効果を確認したい」 ▸ どう活用? → 「カテゴリ別予算配分の意思決定に使う」
▸ 意思決定の頻度は? → 「経営会議は月次だけど、週次のマーケティング定例でも議論」 ▸ 他に見たい切り口は? → 「新規・リピート別の効果も知りたい」 → 必要なのは日次または週次の商品カテゴリ別のデータで、顧客タイプ別の分析も可能なデータマート © LayerX Inc. 汎用性を上げるコツ 13
用途の範囲内で粒度を最小に保つ 月次集計 日次(適切な粒度) 時間単位(必要な場合) year_month: 2025-03 total_sales: 11,200,000 date: 2025-03-15
total_sales: 384,000 timestamp: 2025-03-15 18:00 total_sales: 48,000 ▸ 用途に応じて粒度を選択 - 時間単位 → 特売セール開始直後の売上急増、終了前の駆け込み需要を把握 - 日次 → 平日/週末の傾向の違い、給料日効果などを分析 - 月次 → 日次データから集計可能 時間単位にするとレコード数が日次の24倍になり、コスト増加やパフォーマンス悪化の可能性 → 必要な場合のみ使用 © LayerX Inc. 汎用性を上げるコツ 14
ピボットしない (横持ちしない) date category sales 2025-03-01 electronics 180,000 2025-03-01 fashion
125,000 2025-03-01 food 52,000 ▸ 正規化形式 (縦持ち) のメリット - 新カテゴリー「home_goods」を追加してもスキーマ変更不要 - サブカテゴリーの追加が容易(categoryとsub_categoryの2列で表現可能) - 一つの商品が複数カテゴリに所属する場合も自然に表現できる - ピボットしたければBIツールで簡単にできる © LayerX Inc. 汎用性を上げるコツ 15
ディメンショナル・モデリング (発展編) ▸ 基本的な考え方 - 何を (Fact/指標) どのように (Dimension/軸) 見るかでモデリングする
- Factテーブル : 測定値・集計対象となる指標 - 例 : 売上金額、数量など - 集計関数 (COUNT, SUM, AVG など) の対象になることが多い - Dimensionテーブル : 分析軸となる属性情報 - 例 : 契約日、商品、顧客など - グルーピング・フィルタリング (GROUP BY / WHERE) の対象になることが多い ▸ メリット - 分析時に理解しやすい構造 - 結合 (JOIN) を減らせる - 新しい軸を簡単に追加できる - BIツールとも相性が良い 参考 : 30分でわかる『アジャイルデータモデリング』 by ucchi-さん © LayerX Inc. 汎用性を上げるコツ 16
こんなデータマートは嫌だ。 どんな?
クエリがカオス ▸ クエリ全体がとにかく長く、サブクエリ多用 ▸ 分かりそうで分からない謎の名前 (amt_dlyとか) ▸ 異なる単位やタイムゾーンが混在 ▸ NULLの代わりに使われてそうな値の説明がない
- -1 , 1970-01-01 , etc © LayerX Inc. 18
理解しやすいクエリを書くコツ ▸ 読んで意味のわかる名前をつけよう ▸ サブクエリをCTEに分解しよう (WITH句を使う) © LayerX Inc. 19
読んで意味のわかる名前をつけよう (1) ▸ 基本原則: 省略せず、明確に - amt → amount ▸
一貫性を保つ (以下は例) - テーブル名: 複数形 ( orders , customers ) - ID列: テーブル名の単数形+ _id ( order_id , customer_id ) - 日付/時間: 接尾辞で型を明示 ( created_date , created_at ) - コードと名称を区別 ( category_code / category_name ) 余談 : 生き残り続ける tmp_sales_202311 みたいなのもやめよう © LayerX Inc. 理解しやすいクエリを書くコツ 20
読んで意味のわかる名前をつけよう (2) 曖昧な名前 明確な名前 理由 price price_yen 通貨単位を明示 created_at created_at_jst
タイムゾーンを明示 count number_of_orders 何をカウントしているか明示 sales total_sales 合計値であることを明示 conversion_rate orders_per_page_views_percent 分子・分母、単位を明示 特に rate の分子・分母、単位 (小数、百分率、一万分率など) は重要 © LayerX Inc. 理解しやすいクエリを書くコツ 21
サブクエリをCTEに分解しよう (WITH句を使う) ▸ 問題点 - 入れ子構造で読みづらく、クエリの意図が掴みにくい - 重複が発生し、非効率 - 実は意味のないサブクエリだったりする
( SELECT * FROM table してるだけとか) ▸ CTEに分解すると… - 可読性が高く、役割も明確になり、メンテナンスしやすくなる - 重複やバグに気付きやすくなる 参考 : 人間のためのリーダブルSQL by tenajimaさん © LayerX Inc. 理解しやすいクエリを書くコツ 22
さいごに ▸ ここまで聞いてくれた方はきっと 「今がベストじゃない」 「もっと良くできるはず」と考えているのでは? ▸ あなたの作ったデータマートは、間違いなく事業を、組織を前に進めたと思います ▸ 「こんなデータマートは嫌だ」なんて言ってすみませんでした ▸
今日のLTが少しでもあなたのお役に立てば幸いです © LayerX Inc. 23
[PR] LayerX ではデータの民を募集中! データ基盤の土台 (Data warehouse, ETLなど) が整ってきました。 いよいよAI・データ分析での活用や、データマネジメントが楽しくなってくるフェーズです! (今回の話が好きな人はちょうどいいフェーズかも)
▸ 正社員・副業も可 ▸ 募集職種 - データアナリスト - データサイエンティスト - 機械学習エンジニア - アナリティクスエンジニア - データエンジニア LayerX 採用情報 → jobs.layerx.co.jp © LayerX Inc. 24