Slide 14
Slide 14 text
© LayerX Inc.
# バクラクのSnowflakeクエリ⽣成ルール
## 概要
このルールは、バクラク(⽇本のマルチテナントSaaS)のプロダクトマネージャーが⾃然⾔語を使ってSnowflakeクエリを
⽣成するためのものです。既存コードに影響を与えることなく、データ分析を効率化します。
## 基本情報
- **対象製品**: バクラクの各プロダクト(勤怠、申請、経理など)、バクラク共通管理
- **ユーザー**: Snowflakeを利⽤するバクラクのプロダクトマネージャー
- **⽬的**: ⾃然⾔語からSnowflakeクエリを⽣成する
## 関連ルールファイル
プロダクト固有のSnowflakeルールについては、以下のファイルを参照してください:
- **バクラク勤怠**: `.cursor/rules/shared-bakuraku-snowflake-sql-kintai.mdc`
## データベーススキーマ参照先(共通)
- **バクラク共通管理**: `./code/docs/db` 配下のマークダウンファイル
- **Salesforce (SF)**: `./schema/snowflake/models/default/src/salesforce` 配下にテーブルごとにディレクトリがあ
り、その中の `schema.yml`
## テーブル命名規則(共通)
MySQLのテーブル名からSnowflakeのテーブル名への変換:
- バクラク共通管理: `bakuraku.id.{テーブル名}`
- 例: `users` → `bakuraku.id.users`
## Snowflakeの関数
- `DATE_FORMAT` ではなく、 `TO_DATE` を利⽤
```
TO_DATE( [, ] )
TO_DATE( )
TO_DATE( '' )
TO_DATE( )
```
- タイムゾーンを変更するときは、 `CONVERT_TIMEZONE` を利⽤
```
CONVERT_TIMEZONE( , )
```
## クエリ⽣成時の注意事項(共通)
- enumを利⽤する場合はenumが存在するかどうかをスキーマを⾒て確かめること
- Snowflakeの詳細な情報は、schema/snowflake 配下に存在する
- layerone-dbt-snowflake の構成はschema/snowflake/.cursor/rules/dbt.mdc を参照して
## クエリ⽣成のガイドライン
1. **スキーマ理解**:
- 指定されたパスのマークダウンファイルからスキーマ情報を参照
- コードベースを含めてテーブル間の関連性を把握してJOINを適切に構築
- 存在しないカラムで絞り込みをしないようにスキーマに存在するカラムかどうかを注意深く確認
2. **テーブル名変換**:
- MySQLテーブル名に適切なプレフィックスを付与
- プロダクト固有の変換規則は関連ルールファイルを参照
3. **テナント処理**:
- テナント関連のクエリでは `xxxx` テーブルを使⽤
4. **最適化**:
- パフォーマンスを考慮したクエリ設計
- 必要なカラムのみを選択
- 適切なフィルタリング条件を設定
5. **成果物のレビュー**:
- 作成したクエリが存在しないカラムやenumを利⽤していないかなどチェック
- 利⽤したテーブルのドキュメントを確認してチェックしてください
- WHEREやJOINの条件が間違っていないかのチェック
6. **出⼒形式**:
- 読みやすく整形されたコピーしてそのまま実⾏できるSQLクエリを⽣成
- ユーザーが明⽰的に指⽰しない限り、マークダウン形式ではなくSQLだけを出⼒
- 必要に応じて⽇本語でコメントを付加
## 注意事項
- 既存コードには⼀切変更を加えない
- スキーマ情報は指定されたパスのマークダウンファイルから参照する
- テーブル名の変換規則を厳守する
- テナント情報は必ず `xxxx` テーブルから取得する
- ⽇本語で応答して
- SQL中の `AS` のエイリアスは⽇本語ではなく英語で書いてください
このルールに従うことで、プロダクトマネージャーは⾃然⾔語を使って効率的にSnowflakeクエリを⽣成してください。