macros/unpack/get_column_values.sql (33 lines of code) (raw):
{%- macro get_column_values(node_type) -%}
{{ return(adapter.dispatch('get_column_values', 'dbt_project_evaluator')(node_type)) }}
{%- endmacro -%}
{%- macro default__get_column_values(node_type) -%}
{%- if execute -%}
{%- if node_type == 'nodes' %}
{% set nodes_list = graph.nodes.values() %}
{%- elif node_type == 'sources' -%}
{% set nodes_list = graph.sources.values() %}
{%- else -%}
{{ exceptions.raise_compiler_error("node_type needs to be either nodes or sources, got " ~ node_type) }}
{% endif -%}
{%- set values = [] -%}
{%- for node in nodes_list -%}
{%- for column in node.columns.values() -%}
{%- set values_line =
[
wrap_string_with_quotes(node.unique_id),
wrap_string_with_quotes(dbt.escape_single_quotes(column.name)),
wrap_string_with_quotes(dbt.escape_single_quotes(column.description)),
wrap_string_with_quotes(dbt.escape_single_quotes(column.data_type)),
wrap_string_with_quotes(dbt.escape_single_quotes(tojson(column.constraints))),
column.constraints | selectattr('type', 'equalto', 'not_null') | list | length > 0,
column.constraints | length,
wrap_string_with_quotes(dbt.escape_single_quotes(column.quote))
]
%}
{%- do values.append(values_line) -%}
{%- endfor -%}
{%- endfor -%}
{{ return(values) }}
{%- endif -%}
{%- endmacro -%}