From 1c3934a15d969b253d3bc1cf1f36d92b09f4d39c Mon Sep 17 00:00:00 2001 From: Tristan Handy Date: Tue, 26 Feb 2019 10:43:13 -0500 Subject: [PATCH] made changes to right() function --- .../data/cross_db/data_right.csv | 3 ++- .../models/cross_db_utils/test_right.sql | 2 +- macros/cross_db_utils/right.sql | 25 ++++++++++++++++--- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/integration_tests/data/cross_db/data_right.csv b/integration_tests/data/cross_db/data_right.csv index a9b5cc06..63af8e6a 100644 --- a/integration_tests/data/cross_db/data_right.csv +++ b/integration_tests/data/cross_db/data_right.csv @@ -1,4 +1,5 @@ string_text,length_expression,output abcdef,3,def fishtown,4,town -december,5,ember \ No newline at end of file +december,5,ember +december,0, \ No newline at end of file diff --git a/integration_tests/models/cross_db_utils/test_right.sql b/integration_tests/models/cross_db_utils/test_right.sql index 249bbbe8..eaad4f4f 100644 --- a/integration_tests/models/cross_db_utils/test_right.sql +++ b/integration_tests/models/cross_db_utils/test_right.sql @@ -7,6 +7,6 @@ with data as ( select {{ dbt_utils.right('string_text', 'length_expression') }} as actual, - output as expected + coalesce(output, '') as expected from data \ No newline at end of file diff --git a/macros/cross_db_utils/right.sql b/macros/cross_db_utils/right.sql index dc760cfb..5a2d5226 100644 --- a/macros/cross_db_utils/right.sql +++ b/macros/cross_db_utils/right.sql @@ -13,9 +13,26 @@ {% macro bigquery__right(string_text, length_expression) %} - substr( - {{ string_text }}, - -1 * ({{ length_expression }}) - ) + case when {{ length_expression }} = 0 + then '' + else + substr( + {{ string_text }}, + -1 * ({{ length_expression }}) + ) + end + +{%- endmacro -%} + +{% macro snowflake__right(string_text, length_expression) %} + + case when {{ length_expression }} = 0 + then '' + else + right( + {{ string_text }}, + {{ length_expression }} + ) + end {%- endmacro -%} \ No newline at end of file