Skip to content

Commit 2265cff

Browse files
Merge pull request #865 from elementary-data/ele-5095-dremio-duplication-in-synced-schema
Dremio: Formatting timestamp column
2 parents 75dd8a8 + e5f2365 commit 2265cff

File tree

3 files changed

+35
-4
lines changed

3 files changed

+35
-4
lines changed

macros/commands/dump_table.sql

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,10 @@
2121
{% set order_by_dedup_column = "generated_at" %}
2222
{% set query %}
2323
{% if dedup and (dedup_by_column in column_names) and (order_by_dedup_column in column_names) %}
24-
{{ elementary.dedup_by_column_query(dedup_by_column, order_by_dedup_column, column_names, relation) }}
24+
{{ elementary.dedup_by_column_query(dedup_by_column, order_by_dedup_column, column_names, relation, timestamp_column=timestamp_column) }}
2525
{% else %}
26-
select {{ elementary.escape_select(column_names) }} from {{ relation }}
26+
select {{ elementary.select_columns(column_names, timestamp_column) }}
27+
from {{ relation }}
2728
{% endif %}
2829
{% if timestamp_column %}
2930
{% if since %}
@@ -49,7 +50,7 @@
4950
{% endmacro %}
5051

5152

52-
{% macro dedup_by_column_query(dedup_by_column, order_by_dedup_column, column_names, relation) %}
53+
{% macro dedup_by_column_query(dedup_by_column, order_by_dedup_column, column_names, relation, timestamp_column=none) %}
5354
with indexed_relation as (
5455
select
5556
{{ elementary.escape_select(column_names) }},
@@ -63,6 +64,6 @@
6364
where row_index = 1
6465
)
6566

66-
select {{ elementary.escape_select(column_names) }}
67+
select {{ elementary.select_columns(column_names, timestamp_column) }}
6768
from deduped_relation
6869
{% endmacro %}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{% macro select_columns(column_names, timestamp_column=none) %}
2+
{%- set processed_columns = [] -%}
3+
{%- set timestamp_column_lower = timestamp_column | lower if timestamp_column else none -%}
4+
5+
{%- for column_name in column_names -%}
6+
{%- if timestamp_column and column_name | lower == timestamp_column_lower -%}
7+
{%- do processed_columns.append(elementary.select_timestamp_column(column_name)) -%}
8+
{%- else -%}
9+
{%- do processed_columns.append(elementary.escape_select([column_name])) -%}
10+
{%- endif -%}
11+
{%- endfor -%}
12+
13+
{{ processed_columns | join(", ") }}
14+
{% endmacro %}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{% macro select_timestamp_column(column_name) %}
2+
{{ return(adapter.dispatch('select_timestamp_column', 'elementary')(column_name)) }}
3+
{% endmacro %}
4+
5+
{% macro default__select_timestamp_column(column_name) %}
6+
{{ return(elementary.escape_select([column_name])) }}
7+
{% endmacro %}
8+
9+
{% macro dremio__select_timestamp_column(column_name) %}
10+
{#
11+
Dremio truncates milliseconds when selecting timestamps.
12+
Using TO_CHAR with FFF format preserves them.
13+
#}
14+
{% set escaped_name = elementary.escape_select([column_name]) %}
15+
{{ return('TO_CHAR(' ~ escaped_name ~ ', \'YYYY-MM-DD"T"HH24:MI:SS.FFF\') as ' ~ escaped_name) }}
16+
{% endmacro %}

0 commit comments

Comments
 (0)