Initial publish of dbt_f2dq (f2dq) package v0.12.1.
Clean package repo for Gitea installs via packages.yml git URL. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
{% macro pub_monitored_from_graph() %}
|
||||
{% set monitored = [] %}
|
||||
{% set both = []%}
|
||||
{% do both.extend(graph.nodes.values()) %}
|
||||
{% do both.extend(graph.sources.values()) %}
|
||||
{% set owners_config = f2dq.get_owners_config() %}
|
||||
|
||||
{% set select_var = f2dq.f2dq_var('select', none) %}
|
||||
{% set select_all = true %}
|
||||
|
||||
{% set selected_nodes = none %}
|
||||
{% set selected_tags = none %}
|
||||
|
||||
{% if select_var is not none %}
|
||||
{% set select_all = false %}
|
||||
{% set selected_nodes = dict() %}
|
||||
{% set selected_tags = dict() %}
|
||||
|
||||
{% for el in select_var %}
|
||||
{% if el.startswith('tag:') %}
|
||||
{% do selected_tags.update({el[4:]: True}) %}
|
||||
{% else %}
|
||||
{% do selected_nodes.update({el: True}) %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{% for el in both %}
|
||||
{% if el.resource_type in ['model', 'seed', 'source'] %}
|
||||
{% if f2dq.f2dq_node_config(el, 'monitored') %}
|
||||
{% set target_name = el.identifier or el.alias or el.name %}
|
||||
|
||||
{% if select_all %}
|
||||
{% set selected = true %}
|
||||
{% else %}
|
||||
{% set selected_name = selected_nodes.get(target_name, false) %}
|
||||
{% set selected_tag = [] %}
|
||||
|
||||
{% for tag in el.tags %}
|
||||
{% if selected_tags.get(tag, false) %}
|
||||
{% do selected_tag.append(true) %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% set selected = selected_name or (selected_tag | length > 0) %}
|
||||
{% endif %}
|
||||
|
||||
{% set metrics_groups = f2dq.f2dq_node_config(el, 'metrics_groups', f2dq.f2dq_var('default_metrics')) %}
|
||||
{% set additional_metrics = f2dq.f2dq_node_config(el, 'metrics', {}) %}
|
||||
|
||||
{% do monitored.append({
|
||||
'name': f2dq.name_in_db(target_name),
|
||||
'schema': f2dq.name_in_db(el.schema),
|
||||
'database': f2dq.name_in_db(el.database),
|
||||
'time_filter': f2dq.f2dq_node_config(el, 'time_filter', none),
|
||||
'metrics_groups': metrics_groups,
|
||||
'additional_metrics': f2dq.metrics_in_db(additional_metrics),
|
||||
'metrics': f2dq.metrics_in_db(f2dq.final_metrics(metrics_groups, additional_metrics)),
|
||||
'columns': f2dq.columns_in_db(f2dq.f2dq_node_config(el, 'columns', none)),
|
||||
'anomaly_detector': f2dq.f2dq_node_config(el, 'anomaly_detector', f2dq.f2dq_var('anomaly_detector', {})),
|
||||
'owners': f2dq.prepare_model_owners(f2dq.f2dq_node_config(el, 'owners', []), owners_config),
|
||||
'selected': selected
|
||||
})
|
||||
%}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{{ return(monitored) }}
|
||||
{% endmacro %}
|
||||
|
||||
{% macro get_owners_config() %}
|
||||
{% set owners_config = f2dq.f2dq_var('owners_config', {}) %}
|
||||
{{ return (owners_config) }}
|
||||
{% endmacro %}
|
||||
|
||||
{% macro prepare_model_owners(f2dq_owners, owners_config) %}
|
||||
{% set owners = {} %}
|
||||
{% set seen_identifiers = {} %}
|
||||
{% for owner in f2dq_owners if owners_config.get(owner) %}
|
||||
{% set members = owners_config.get(owner) %}
|
||||
{% for member in members %}
|
||||
{% set identifier = member.get('identifier') %}
|
||||
{% if identifier not in seen_identifiers %}
|
||||
{% do seen_identifiers.update({identifier: true }) %}
|
||||
{% do owners.update({
|
||||
identifier: {
|
||||
'notify_channel': member.get('type'),
|
||||
'owner': owner,
|
||||
'name': member.get('name')
|
||||
}
|
||||
}) %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{{ return (owners) }}
|
||||
{% endmacro %}
|
||||
@@ -0,0 +1,32 @@
|
||||
{% macro get_monitored_columns(schema, database) %}
|
||||
{{ adapter.dispatch('get_monitored_columns', 'f2dq')(schema, database) }}
|
||||
{% endmacro %}
|
||||
|
||||
{% macro default__get_monitored_columns(table_schema, db_name) %}
|
||||
{% set relation = api.Relation.create(database=db_name, schema=table_schema) %}
|
||||
select
|
||||
table_name,
|
||||
table_schema,
|
||||
table_catalog,
|
||||
column_name,
|
||||
data_type,
|
||||
is_nullable
|
||||
from
|
||||
{{ relation.information_schema('COLUMNS') }}
|
||||
where
|
||||
table_schema = '{{ table_schema }}'
|
||||
{% endmacro %}
|
||||
|
||||
{% macro redshift__get_monitored_columns(table_schema, db_name) %}
|
||||
select
|
||||
table_name,
|
||||
table_schema,
|
||||
table_catalog,
|
||||
column_name,
|
||||
data_type,
|
||||
is_nullable
|
||||
from
|
||||
svv_columns
|
||||
where
|
||||
table_schema = '{{ table_schema }}'
|
||||
{% endmacro %}
|
||||
@@ -0,0 +1,10 @@
|
||||
{% macro get_tables() %}
|
||||
select *
|
||||
from {{ ref('f2dq_selected') }}
|
||||
order by name, schema, database, time_filter
|
||||
{% endmacro %}
|
||||
|
||||
{% macro get_schemas() %}
|
||||
select distinct schema, database
|
||||
from {{ ref('f2dq_selected') }}
|
||||
{% endmacro %}
|
||||
@@ -0,0 +1,17 @@
|
||||
{% macro save_monitored(monitored_path) %}
|
||||
|
||||
{% set monitored_query %}
|
||||
select
|
||||
{{ full_table_name('name', 'schema', 'database') }} as {{ f2dq.quote_column('model') }},
|
||||
time_filter as {{ f2dq.quote_column('time_filter') }},
|
||||
metrics as {{ f2dq.quote_column('metrics') }},
|
||||
columns as {{ f2dq.quote_column('columns') }},
|
||||
anomaly_detector as {{ f2dq.quote_column('anomaly_detector') }},
|
||||
owners as {{ f2dq.quote_column('owners') }}
|
||||
from {{ ref('f2dq_selected') }}
|
||||
{% endset %}
|
||||
{% set query_result = run_query(monitored_query) %}
|
||||
{% set monitored_file_path = monitored_path or 'target/f2dq/monitored.json' %}
|
||||
{% do query_result.to_json(monitored_file_path) %}
|
||||
|
||||
{% endmacro %}
|
||||
@@ -0,0 +1,33 @@
|
||||
{% macro full_table_name(table_name, table_schema, table_catalog) %}
|
||||
{{ adapter.dispatch('full_table_name', 'f2dq')(table_name, table_schema, table_catalog) }}
|
||||
{% endmacro %}
|
||||
|
||||
|
||||
{% macro default__full_table_name(table_name, table_schema, table_catalog) %}
|
||||
'"' || {{table_catalog}} || '"' || '.' || '"' || {{table_schema}} || '"' || '.' || '"' || {{table_name}} || '"'
|
||||
{% endmacro %}
|
||||
|
||||
|
||||
{% macro bigquery__full_table_name(table_name, table_schema, table_catalog) %}
|
||||
'`' || {{table_catalog}} || '`' || '.' || '`' || {{table_schema}} || '`' || '.' || '`' || {{table_name}} || '`'
|
||||
{% endmacro %}
|
||||
|
||||
|
||||
{% macro full_table_name_values(table_name, table_schema, table_catalog) %}
|
||||
{% set result = adapter.dispatch('full_table_name_values', 'f2dq')(table_name, table_schema, table_catalog) %}
|
||||
{{ return (result.strip()) }}
|
||||
{% endmacro %}
|
||||
|
||||
{% macro default__full_table_name_values(table_name, table_schema, table_catalog) %}
|
||||
"{{table_catalog}}"."{{table_schema}}"."{{table_name}}"
|
||||
{% endmacro %}
|
||||
|
||||
|
||||
{% macro bigquery__full_table_name_values(table_name, table_schema, table_catalog) %}
|
||||
`{{table_catalog}}`.`{{table_schema}}`.`{{table_name}}`
|
||||
{% endmacro %}
|
||||
|
||||
|
||||
{% macro snowflake__full_table_name_values(table_name, table_schema, table_catalog) %}
|
||||
"{{table_catalog|upper}}"."{{table_schema|upper}}"."{{table_name|upper}}"
|
||||
{% endmacro %}
|
||||
Reference in New Issue
Block a user