Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat: add macro get_query_results_as_single_value #696

Merged
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
ed499fd
feat: add query_results_as_single_value.sql macro
Sep 30, 2022
3274806
chore: update the macro definition
Oct 1, 2022
4fb7a94
chore: update test
Oct 1, 2022
a2500a5
chore: final edits
Oct 1, 2022
8ae1043
chore: remove extra model reference
Oct 1, 2022
e676190
chore: update return() to handle BigQuery
Oct 1, 2022
89980b0
chore: README.md, macro updates
CR-Lough Oct 27, 2022
957fc97
feat: factoring in first review changes
CR-Lough Oct 30, 2022
4558d78
chore: updates to testing
CR-Lough Oct 30, 2022
d78d7d8
chore: updates tests
CR-Lough Oct 30, 2022
ade6c27
chore: update test for bigquery
CR-Lough Oct 30, 2022
f6c8bf3
chore: update cast for bigquery
CR-Lough Oct 30, 2022
f170767
Merge branch 'utils-v1' into feat-get_query_results_as_single_value
CR-Lough Oct 30, 2022
2781bec
Use example with a single record in readme
joellabes Nov 23, 2022
fd9de07
Add default value when no record found
joellabes Nov 23, 2022
f044e1c
test when no results are found
joellabes Nov 23, 2022
fd7791a
Rename test file
joellabes Nov 23, 2022
c69b036
Add test definitions
joellabes Nov 23, 2022
683dc1c
Fix incorrect ref
joellabes Nov 23, 2022
c344814
And another one
joellabes Nov 23, 2022
9b03391
Update test_get_query_results_as_single_value.sql
joellabes Nov 23, 2022
2d8bc9c
cast strings as strings
joellabes Nov 23, 2022
cd99a84
Put arg in right place
joellabes Nov 23, 2022
de80a88
Update test_get_query_results_as_single_value.sql
joellabes Nov 23, 2022
641f286
switch to limit zero for BQ
joellabes Nov 23, 2022
3043aec
Update test_get_query_results_as_single_value.sql
joellabes Nov 23, 2022
65747ab
quote column name in arg
joellabes Nov 23, 2022
7bd1523
snowflake wont let you safe cast something to itself
joellabes Nov 23, 2022
33b8f3c
Merge branch 'utils-v1' into feat-get_query_results_as_single_value
joellabes Nov 23, 2022
4f2ccd1
warning to future readers [skip ci]
joellabes Nov 23, 2022
26e71a9
Add singular test to check for multi row/multi column setup
joellabes Nov 23, 2022
89570dc
Merge branch 'feat-get_query_results_as_single_value' of https://gith…
joellabes Nov 23, 2022
88026f5
forgot to save comment [skip ci]
joellabes Nov 23, 2022
2a59bb0
Rename to get_single_value
joellabes Nov 24, 2022
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
date,float,int,string
9/30/2022,3.3,19,coalesce
26 changes: 26 additions & 0 deletions integration_tests/models/sql/schema.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,32 @@
version: 2

models:
- name: test_get_query_results_as_single_value
columns:
- name: date_value
tests:
- accepted_values:
values:
- '9/30/2022'

- name: float_value
tests:
- accepted_values:
values:
- '3.3'

- name: integer_value
tests:
- accepted_values:
values:
- '19'

- name: string_value
tests:
- accepted_values:
values:
- 'coalesce'

- name: test_generate_series
tests:
- dbt_utils.equality:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{%- set default_ref = ref('data_get_single_column_row_value')|string -%}

with default_data as (

select
{{ dbt_utils.get_query_results_as_single_value('select * from '+ default_ref,0,0) }} as date_value,
{{ dbt_utils.get_query_results_as_single_value('select * from '+ default_ref,0,1) }} as float_value,
{{ dbt_utils.get_query_results_as_single_value('select * from '+ default_ref,0,2) }} as integer_value,
{{ dbt_utils.get_query_results_as_single_value('select * from '+ default_ref,0,3) }} as string_value
from {{ ref('data_get_single_column_row_value') }}

)

select *
from default_data
29 changes: 29 additions & 0 deletions macros/sql/get_query_results_as_single_value.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{% macro get_query_results_as_single_value(query, row_position=0, column_position=0) %}
CR-Lough marked this conversation as resolved.
Show resolved Hide resolved
{{ return(adapter.dispatch('get_query_results_as_single_value', 'dbt_utils')(query, row_position, column_position)) }}
{% endmacro %}

{% macro default__get_query_results_as_single_value(query, row_position=0, column_position=0) %}

{# This macro returns the (row_position, column_position) record in a query as a string #}
{%- set nth_row = row_position -%}
{%- set nth_column = column_position -%}
CR-Lough marked this conversation as resolved.
Show resolved Hide resolved

{%- call statement('get_query_result', fetch_result=True,auto_begin=false) -%}

{{ query }}

{%- endcall -%}

{%- if execute -%}

{% set sql_result = load_result('get_query_result').table.columns[nth_column].values()[nth_row]|string %}
CR-Lough marked this conversation as resolved.
Show resolved Hide resolved

{%- else -%}

{% set sql_result = "" %}

{%- endif -%}

{{ return("CAST('"+sql_result+"' AS "+dbt.type_string()+")") }}
CR-Lough marked this conversation as resolved.
Show resolved Hide resolved

{% endmacro %}