mirror of
https://gitlab.com/cief-data/dbt_cloud.git
synced 2026-08-19 04:14:00 +00:00
README Update
This commit is contained in:
@@ -1,6 +1,115 @@
|
|||||||
Welcome to your new dbt project!
|
# DBT governance
|
||||||
|
Thid markdown document will specify the rules that need to follow by every developer.
|
||||||
|
<br>
|
||||||
|
Short naming converntion lists that need to follow
|
||||||
|
|
||||||
|
| model_type Shortcut | Full name |
|
||||||
|
| ------------------- | ------ |
|
||||||
|
| seed | Seed |
|
||||||
|
| src | Source |
|
||||||
|
| snap | Snapshot |
|
||||||
|
| stg | Stage |
|
||||||
|
| int | Intermediate |
|
||||||
|
| fct | Fact |
|
||||||
|
| dim | Dimension |
|
||||||
|
| rep | Report |
|
||||||
|
| sem | Semantic |
|
||||||
|
|
||||||
|
| model_name Shortcut | Full name | Use case |
|
||||||
|
| ------------------- | ------ | ------ |
|
||||||
|
| brg | Brigde | relationship table |
|
||||||
|
| log | Log | log data |
|
||||||
|
|
||||||
|
|
||||||
|
## CIEF General Rule
|
||||||
|
- Snowflake SQL use to write dbt SQL code
|
||||||
|
- Star schema is use
|
||||||
|
- First week of the day is start at Monday, and last week of the day will be Sunday
|
||||||
|
- Fiscal 1st quarter is start from Febuary
|
||||||
|
- Timezone: Kuala Lumpur / Malaysia (GMT +8)
|
||||||
|
- Some status/type is not input in raw database (You should found in seed)
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
## DBT Rule
|
||||||
|
### Structure of the dbt folder model
|
||||||
|
- Analyses
|
||||||
|
1. Analyses model will not create in Snowflake
|
||||||
|
2. You can write some adhoc queries
|
||||||
|
3. test some SQL code before write in Models
|
||||||
|
|
||||||
|
<br/>
|
||||||
|
|
||||||
|
- Macros
|
||||||
|
1. Jinja function that reuse in other .sql / .py file
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
- Models
|
||||||
|
- Staging
|
||||||
|
1. Materialise: `View`
|
||||||
|
2. 1-to-1 relationship (or mapping) to source tables.
|
||||||
|
3. Column renaming
|
||||||
|
4. Column remove
|
||||||
|
5. Column data renaming, such as (status integer to string)
|
||||||
|
6. Data input error cleansing
|
||||||
|
7. Check for raw data freshness
|
||||||
|
8. Data type transformation
|
||||||
|
|
||||||
|
- Intermediate
|
||||||
|
1. Materialise: `Ephemerally`
|
||||||
|
2. Stacking layers of logic with clear and specific purposes to prepa our staging models to join into the entities we want
|
||||||
|
3. Be referenced repeatedly in more than one model
|
||||||
|
4. Isolating complex operations
|
||||||
|
|
||||||
|
|
||||||
|
- marts/warehouse
|
||||||
|
1. Store fact and dimension models
|
||||||
|
|
||||||
|
- marts/reporting
|
||||||
|
1. Store custom reports
|
||||||
|
|
||||||
|
- Seeds
|
||||||
|
|
||||||
|
- Snapshots
|
||||||
|
|
||||||
|
- Tests
|
||||||
|
|
||||||
|
### File Naming Rules
|
||||||
|
- File names must be unique
|
||||||
|
- Each sql/python file must start with [`model_type`]_[`system_name`]__[`model_name`]s.sql/py
|
||||||
|
- The model should be name as plural, (eg: stg_exchange__orders.sql)
|
||||||
|
|
||||||
|
### Column Naming Rules
|
||||||
|
- If array datatype, the column naming must be plural eg (ids, messages)
|
||||||
|
|
||||||
|
### SQL Coding Rule
|
||||||
|
- The SQL clause **must** be UPPERCASE (eg. `SELECT`, `FROM`, `WHERE`, `GROUP BY`, `LIMIT`, `WITH`, `AS`, `SUM`, `PARTITION OVER`, `DIV0`, `LEFT JOIN`, `ON` ....)
|
||||||
|
- Try to avoid using `EXCLUDE` in the SQL
|
||||||
|
- Avoid using multi layer subquery, and try to use CTE, subquery must not more than 1 layer
|
||||||
|
- Each model structure must contain with
|
||||||
|
|
||||||
|
```sql
|
||||||
|
--IMPORT
|
||||||
|
WITH [table_names] AS (
|
||||||
|
SELECT * FROM {{ ref('file_names')}}
|
||||||
|
),
|
||||||
|
|
||||||
|
--LOGIC
|
||||||
|
[logic_name] AS (
|
||||||
|
.....
|
||||||
|
),
|
||||||
|
|
||||||
|
--FINAL
|
||||||
|
final__[table_names] AS (
|
||||||
|
|
||||||
|
)
|
||||||
|
SELECT * FROM final__[table_names]
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Using the starter project
|
|
||||||
|
|
||||||
Try running the following commands:
|
Try running the following commands:
|
||||||
- dbt run
|
- dbt run
|
||||||
|
|||||||
Reference in New Issue
Block a user