Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,8 @@ schema.yml file.
- `model_names` (required): The model(s) you wish to generate YAML for.
- `upstream_descriptions` (optional, default=False): Whether you want to include descriptions for identical column names from upstream models and sources.
- `include_data_types` (optional, default=True): Whether you want to add data types to your model column definitions.
- `case_sensitive_cols` (optional, default=False): Whether you want column names to be
in lowercase, or to match the case in the model table.

### Usage:

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
col_A,col_B
1,a
2,b
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{% set actual_model_yaml = codegen.generate_model_yaml(
model_names=['data__a_relation_case_sensitive_columns'],
case_sensitive_cols=True,
)
%}

{% set expected_model_yaml %}
version: 2

models:
- name: data__a_relation_case_sensitive_columns
description: ""
columns:
- name: col_A
data_type: {{ integer_type_value() }}
description: ""

- name: col_B
data_type: {{ text_type_value() }}
description: ""

{% endset %}

{{ assert_equal (actual_model_yaml | trim, expected_model_yaml | trim) }}
1 change: 1 addition & 0 deletions integration_tests/tests/test_generate_source.sql
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ sources:
- name: {{ raw_schema | trim | lower }}
tables:
- name: data__a_relation
- name: data__a_relation_case_sensitive_columns
- name: data__b_relation
- name: data__campaign_analytics
{% endset %}
Expand Down
10 changes: 10 additions & 0 deletions integration_tests/tests/test_generate_source_all_args.sql
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,16 @@ sources:
data_type: {{ text_type_value() }}
description: ""

- name: data__a_relation_case_sensitive_columns
description: ""
columns:
- name: col_a
data_type: {{ integer_type_value() }}
description: ""
- name: col_b
data_type: {{ text_type_value() }}
description: ""

- name: data__b_relation
description: ""
columns:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ sources:
database: {{ target.database | trim | lower }}
tables:
- name: data__a_relation
- name: data__a_relation_case_sensitive_columns
- name: data__b_relation
- name: data__campaign_analytics
{% endset %}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ sources:
schema: {{ raw_schema | trim | lower }}
tables:
- name: data__a_relation
- name: data__a_relation_case_sensitive_columns
- name: data__b_relation
- name: data__campaign_analytics
{% endset %}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ sources:
tables:
- name: data__a_relation
description: ""
- name: data__a_relation_case_sensitive_columns
description: ""
- name: data__b_relation
description: ""
- name: data__campaign_analytics
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ sources:
schema: {{ raw_schema | trim | lower }}
tables:
- name: data__a_relation
- name: data__a_relation_case_sensitive_columns
- name: data__b_relation
- name: data__campaign_analytics

Expand Down
20 changes: 10 additions & 10 deletions macros/generate_model_yaml.sql
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
{% macro generate_column_yaml(column, model_yaml, column_desc_dict, include_data_types, parent_column_name="") %}
{{ return(adapter.dispatch('generate_column_yaml', 'codegen')(column, model_yaml, column_desc_dict, include_data_types, parent_column_name)) }}
{% macro generate_column_yaml(column, model_yaml, column_desc_dict, include_data_types, parent_column_name="", case_sensitive_cols=False) %}
{{ return(adapter.dispatch('generate_column_yaml', 'codegen')(column, model_yaml, column_desc_dict, include_data_types, parent_column_name, case_sensitive_cols)) }}
{% endmacro %}

{% macro default__generate_column_yaml(column, model_yaml, column_desc_dict, include_data_types, parent_column_name) %}
{% macro default__generate_column_yaml(column, model_yaml, column_desc_dict, include_data_types, parent_column_name, case_sensitive_cols) %}
{% if parent_column_name %}
{% set column_name = parent_column_name ~ "." ~ column.name %}
{% else %}
{% set column_name = column.name %}
{% endif %}

{% do model_yaml.append(' - name: ' ~ column_name | lower ) %}
{% do model_yaml.append(' - name: ' ~ (column_name if case_sensitive_cols else column_name | lower)) %}
{% if include_data_types %}
{% do model_yaml.append(' data_type: ' ~ codegen.data_type_format_model(column)) %}
{% endif %}
Expand All @@ -18,17 +18,17 @@

{% if column.fields|length > 0 %}
{% for child_column in column.fields %}
{% set model_yaml = codegen.generate_column_yaml(child_column, model_yaml, column_desc_dict, include_data_types, parent_column_name=column_name) %}
{% set model_yaml = codegen.generate_column_yaml(child_column, model_yaml, column_desc_dict, include_data_types, parent_column_name=column_name, case_sensitive_cols=case_sensitive_cols) %}
{% endfor %}
{% endif %}
{% do return(model_yaml) %}
{% endmacro %}

{% macro generate_model_yaml(model_names=[], upstream_descriptions=False, include_data_types=True) -%}
{{ return(adapter.dispatch('generate_model_yaml', 'codegen')(model_names, upstream_descriptions, include_data_types)) }}
{% macro generate_model_yaml(model_names=[], upstream_descriptions=False, include_data_types=True, case_sensitive_cols=False) -%}
{{ return(adapter.dispatch('generate_model_yaml', 'codegen')(model_names, upstream_descriptions, include_data_types, case_sensitive_cols)) }}
{%- endmacro %}

{% macro default__generate_model_yaml(model_names, upstream_descriptions, include_data_types) %}
{% macro default__generate_model_yaml(model_names, upstream_descriptions, include_data_types, case_sensitive_cols) %}

{% set model_yaml=[] %}

Expand All @@ -49,7 +49,7 @@
{% set column_desc_dict = codegen.build_dict_column_descriptions(model) if upstream_descriptions else {} %}

{% for column in columns %}
{% set model_yaml = codegen.generate_column_yaml(column, model_yaml, column_desc_dict, include_data_types) %}
{% set model_yaml = codegen.generate_column_yaml(column, model_yaml, column_desc_dict, include_data_types, parent_column_name="", case_sensitive_cols=case_sensitive_cols) %}
{% endfor %}
{% endfor %}
{% endif %}
Expand All @@ -62,4 +62,4 @@

{% endif %}

{% endmacro %}
{% endmacro %}
Loading