Skip to content

Commit ed95b14

Browse files
committed
Finish off upivot boolean logic
1 parent 7c1082d commit ed95b14

File tree

5 files changed

+30
-11
lines changed

5 files changed

+30
-11
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
id,my_bool
2+
1,true
3+
2,false
4+
3,
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
customer_id,created_at,status,segment,is_updated
22
123,2017-01-01,active,tier 1,TRUE
33
234,2017-02-01,active,tier 3,FALSE
4-
567,2017-03-01,churned,tier 2,TRUE
4+
567,2017-03-01,churned,tier 2,
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
customer_id,created_at,prop,val
2-
123,"2017-01-01","segment","tier 1"
3-
123,"2017-01-01","status","active"
4-
123,"2017-01-01","is_updated","true"
5-
234,"2017-02-01","segment","tier 3"
6-
234,"2017-02-01","status","active"
7-
234,"2017-02-01","is_updated","false"
8-
567,"2017-03-01","status","churned"
9-
567,"2017-03-01","is_updated","true"
10-
567,"2017-03-01","segment","tier 2"
2+
123,2017-01-01,segment,tier 1
3+
123,2017-01-01,status,active
4+
123,2017-01-01,is_updated,true
5+
234,2017-02-01,segment,tier 3
6+
234,2017-02-01,status,active
7+
234,2017-02-01,is_updated,false
8+
567,2017-03-01,status,churned
9+
567,2017-03-01,is_updated,
10+
567,2017-03-01,segment,tier 2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{% macro cast_bool_to_text(field) %}
2+
{{ adapter.dispatch('cast_bool_to_text', packages = dbt_utils._get_utils_namespaces()) (field) }}
3+
{% endmacro %}
4+
5+
6+
{% macro default__cast_bool_to_text(field) %}
7+
cast({{ col }} as {{ type }})
8+
{% endmacro %}
9+
10+
{% macro redshift__cast_bool_to_text(field) %}
11+
case
12+
when {{ field }} is true then 'true'
13+
when {{ field }} is false then 'false'
14+
end::text
15+
{% endmacro %}

macros/sql/unpivot.sql

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ Arguments:
5959

6060
cast('{{ col.column }}' as {{ dbt_utils.type_string() }}) as {{ field_name }},
6161
cast( {% if col.data_type == 'boolean' %}
62-
case when {{ col.column }} then 'true' else 'false' end
62+
{{ dbt_utils.cast_bool_to_text(col.column) }}
6363
{% else %}
6464
{{ col.column }}
6565
{% endif %}

0 commit comments

Comments
 (0)