Data warehouse の命名
ゆずたそメソッド
source__{datasource}
warehouse__{domain}
mart__{use}
source テーブルの命名や置き場所に迷いにくい
一方でドメインが反映されない
最終的に source を多様に参照するなら source にドメイン無いほうが良いかも vs 言うて特定ドメインに密着している/特定ドメインでしか使わない source もある
spreadsheet に置いた小さな (source | warehouse) → mart で使う設定を、source__spreadsheet に置いても再利用はしない、それを気にするかどうか
warehouse や mart はテーブルの話か dataset の話か曖昧
途中段階の中間テーブルをどう持つか、warehouse?
名前が長くなりがち
更に長くなるけど prefix 付けて上位のグルーピングを命名で表現できる
1つの GCP プロジェクトにデータ基盤を集約する命名感がある
サービスごとに GCP プロジェクトが既にあり、そこに BQ table が色々ある
基盤から各プロジェクトを参照する形式ではどうするのがよいか?
Dataform blog メソッド
(source)
ephemeral/
core/
reporting/
変換の途中段階を ephemeral として切り出すのはよい
3層なら warehouse に置くか?
_ prefix つけてたらいいか
core = 再利用性のある warehouse
reporting = mart
まあ分かるけど、lake-warehouse-mart の命名から外れるメリットも見いだせない
source だろうけど、bq や github やらと ephemeral / core / reporting が並ぶのはとっちらかってる感ある
https://assets.dataform.co/blog/upadting-warehouse-naming-convention/schema-viewer.png
今もこれでやっているのかというと疑問がある
カラムの命名の話なのでデータセットにはあんまり関係ない
prefix & postfix で色々表現している
テーブルは _T でビューは _V、ディメンションなら _DM とかファクトなら _FT とか
_T や _V は要らないでしょ、_DM や _FT は大規模なら気持ちはわかる...か?
まあ自分ならやらない
立ち戻って
よい命名で叶えたいこと
何がどこにあるか利用者が探しやすい
データを置く/テーブルを作る時にどこに置くべきか迷わない
3層モデリング
普及していて分かりやすい
複数の GCP プロジェクトで使うのが前提
(エンジニア側) lake(source) → warehouse → mart (利用者側)
側によって重視する利便性が変わるのでは
利用者は自分の用途の mart に集中する
mart がドメインから分かる、見るべき範囲が限定されるほうがいい
dataset で区切られた範囲
mart prefix はまあ受け入れられるだろう
lake & warehouse 整備者 (データエンジニア)
迷わなさや一貫性
ドメイン横断して使われうる
使われないものもある、それを同じように扱うべきか
気になり
中間テーブルの位置づけ
warehouse や mart の加工に必要な中間テーブル
暫定: warehouse や mart に置いて外部から使わないでね感を出すために _ prefix をつける
設定テーブルのようなもの
warehouse → mart で特定の行を抽出したり上書きしたりしたい
例: 売上DBから重要顧客だけを抽出したダッシュボードを作りたい時に (顧客ID, is重要) のテーブルを作って JOIN して mart を作る
spreadsheet に書いて外部テーブルにするのが楽
これは source か?
暫定: まあ source__spreadsheet でいいかも
再利用性の皆無なもの
特定ドメインで必要だから置いているもの
再利用性ないなら warehouse ではない、中間テーブルの仲間か
_ をつけるのはよさそう
再利用性のないものを置く必要があるのは warehouse や mart の要請 = 各々の一部として捉える?
テーブルの prefix でまとめるのは良くない?
{project}.{domain}.source__foo
{project}.{domain}.warehouse__foo
domain 以下にまとまっていて探しやすい
source を他のドメインでも使う時に使いづらい?
データ基盤なら source の活用に開かれていたい
他の domain でも使い始めた時に、主がどちらか分からなくなる?
外部の GCP プロジェクトのデータは?
置き場は変えられない
1. Dataform で declaration を external/ 以下に置く? 2. source__bigquery ? でも参照だけだからな
→ まあ 1 でいいかなあ、依存関係の可視化ができれば
段階的に
https://gyazo.com/0fc181f27556d8d3b3f6505307b3290e
初期はこれぐらいなんじゃないか
source = BigQuery
1. で直接参照して DataStudio や Spreadsheet で眺める
2. source がそのままで使いづらければ加工して mart になる
最初は再利用性を考えてない
考えて warehouse と名付けてしまうこともある
中間テーブルっぽいものとか
特定用途っぽくないし、再利用性もありそうなものとか
warehouse 作る