Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions .changes/unreleased/Fixes-20250528-120939.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
kind: Fixes
body: Use TIMESTAMP_TRUNC instead of DATETIME_TRUNC for BigQuery
time: 2025-05-28T12:09:39.003884-07:00
custom:
Author: courtneyholcomb
Issue: "1765"
2 changes: 1 addition & 1 deletion metricflow/sql/render/big_query.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ def visit_date_trunc_expr(self, node: SqlDateTruncExpression) -> SqlExpressionRe
prefix = "iso"

return SqlExpressionRenderResult(
sql=f"DATETIME_TRUNC({arg_rendered.sql}, {prefix}{node.time_granularity.value})",
sql=f"TIMESTAMP_TRUNC({arg_rendered.sql}, {prefix}{node.time_granularity.value})",
bind_parameter_set=arg_rendered.bind_parameter_set,
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,23 +122,23 @@ FROM (
SELECT
1 AS visits
, visits_source_src_28000.user_id AS visitors
, DATETIME_TRUNC(visits_source_src_28000.ds, day) AS ds__day
, DATETIME_TRUNC(visits_source_src_28000.ds, isoweek) AS ds__week
, DATETIME_TRUNC(visits_source_src_28000.ds, month) AS ds__month
, DATETIME_TRUNC(visits_source_src_28000.ds, quarter) AS ds__quarter
, DATETIME_TRUNC(visits_source_src_28000.ds, year) AS ds__year
, TIMESTAMP_TRUNC(visits_source_src_28000.ds, day) AS ds__day
, TIMESTAMP_TRUNC(visits_source_src_28000.ds, isoweek) AS ds__week
, TIMESTAMP_TRUNC(visits_source_src_28000.ds, month) AS ds__month
, TIMESTAMP_TRUNC(visits_source_src_28000.ds, quarter) AS ds__quarter
, TIMESTAMP_TRUNC(visits_source_src_28000.ds, year) AS ds__year
, EXTRACT(year FROM visits_source_src_28000.ds) AS ds__extract_year
, EXTRACT(quarter FROM visits_source_src_28000.ds) AS ds__extract_quarter
, EXTRACT(month FROM visits_source_src_28000.ds) AS ds__extract_month
, EXTRACT(day FROM visits_source_src_28000.ds) AS ds__extract_day
, IF(EXTRACT(dayofweek FROM visits_source_src_28000.ds) = 1, 7, EXTRACT(dayofweek FROM visits_source_src_28000.ds) - 1) AS ds__extract_dow
, EXTRACT(dayofyear FROM visits_source_src_28000.ds) AS ds__extract_doy
, visits_source_src_28000.referrer_id
, DATETIME_TRUNC(visits_source_src_28000.ds, day) AS visit__ds__day
, DATETIME_TRUNC(visits_source_src_28000.ds, isoweek) AS visit__ds__week
, DATETIME_TRUNC(visits_source_src_28000.ds, month) AS visit__ds__month
, DATETIME_TRUNC(visits_source_src_28000.ds, quarter) AS visit__ds__quarter
, DATETIME_TRUNC(visits_source_src_28000.ds, year) AS visit__ds__year
, TIMESTAMP_TRUNC(visits_source_src_28000.ds, day) AS visit__ds__day
, TIMESTAMP_TRUNC(visits_source_src_28000.ds, isoweek) AS visit__ds__week
, TIMESTAMP_TRUNC(visits_source_src_28000.ds, month) AS visit__ds__month
, TIMESTAMP_TRUNC(visits_source_src_28000.ds, quarter) AS visit__ds__quarter
, TIMESTAMP_TRUNC(visits_source_src_28000.ds, year) AS visit__ds__year
, EXTRACT(year FROM visits_source_src_28000.ds) AS visit__ds__extract_year
, EXTRACT(quarter FROM visits_source_src_28000.ds) AS visit__ds__extract_quarter
, EXTRACT(month FROM visits_source_src_28000.ds) AS visit__ds__extract_month
Expand Down Expand Up @@ -304,23 +304,23 @@ FROM (
SELECT
1 AS visits
, visits_source_src_28000.user_id AS visitors
, DATETIME_TRUNC(visits_source_src_28000.ds, day) AS ds__day
, DATETIME_TRUNC(visits_source_src_28000.ds, isoweek) AS ds__week
, DATETIME_TRUNC(visits_source_src_28000.ds, month) AS ds__month
, DATETIME_TRUNC(visits_source_src_28000.ds, quarter) AS ds__quarter
, DATETIME_TRUNC(visits_source_src_28000.ds, year) AS ds__year
, TIMESTAMP_TRUNC(visits_source_src_28000.ds, day) AS ds__day
, TIMESTAMP_TRUNC(visits_source_src_28000.ds, isoweek) AS ds__week
, TIMESTAMP_TRUNC(visits_source_src_28000.ds, month) AS ds__month
, TIMESTAMP_TRUNC(visits_source_src_28000.ds, quarter) AS ds__quarter
, TIMESTAMP_TRUNC(visits_source_src_28000.ds, year) AS ds__year
, EXTRACT(year FROM visits_source_src_28000.ds) AS ds__extract_year
, EXTRACT(quarter FROM visits_source_src_28000.ds) AS ds__extract_quarter
, EXTRACT(month FROM visits_source_src_28000.ds) AS ds__extract_month
, EXTRACT(day FROM visits_source_src_28000.ds) AS ds__extract_day
, IF(EXTRACT(dayofweek FROM visits_source_src_28000.ds) = 1, 7, EXTRACT(dayofweek FROM visits_source_src_28000.ds) - 1) AS ds__extract_dow
, EXTRACT(dayofyear FROM visits_source_src_28000.ds) AS ds__extract_doy
, visits_source_src_28000.referrer_id
, DATETIME_TRUNC(visits_source_src_28000.ds, day) AS visit__ds__day
, DATETIME_TRUNC(visits_source_src_28000.ds, isoweek) AS visit__ds__week
, DATETIME_TRUNC(visits_source_src_28000.ds, month) AS visit__ds__month
, DATETIME_TRUNC(visits_source_src_28000.ds, quarter) AS visit__ds__quarter
, DATETIME_TRUNC(visits_source_src_28000.ds, year) AS visit__ds__year
, TIMESTAMP_TRUNC(visits_source_src_28000.ds, day) AS visit__ds__day
, TIMESTAMP_TRUNC(visits_source_src_28000.ds, isoweek) AS visit__ds__week
, TIMESTAMP_TRUNC(visits_source_src_28000.ds, month) AS visit__ds__month
, TIMESTAMP_TRUNC(visits_source_src_28000.ds, quarter) AS visit__ds__quarter
, TIMESTAMP_TRUNC(visits_source_src_28000.ds, year) AS visit__ds__year
, EXTRACT(year FROM visits_source_src_28000.ds) AS visit__ds__extract_year
, EXTRACT(quarter FROM visits_source_src_28000.ds) AS visit__ds__extract_quarter
, EXTRACT(month FROM visits_source_src_28000.ds) AS visit__ds__extract_month
Expand Down Expand Up @@ -453,37 +453,37 @@ FROM (
1 AS buys
, 1 AS buys_month
, buys_source_src_28000.user_id AS buyers
, DATETIME_TRUNC(buys_source_src_28000.ds, day) AS ds__day
, DATETIME_TRUNC(buys_source_src_28000.ds, isoweek) AS ds__week
, DATETIME_TRUNC(buys_source_src_28000.ds, month) AS ds__month
, DATETIME_TRUNC(buys_source_src_28000.ds, quarter) AS ds__quarter
, DATETIME_TRUNC(buys_source_src_28000.ds, year) AS ds__year
, TIMESTAMP_TRUNC(buys_source_src_28000.ds, day) AS ds__day
, TIMESTAMP_TRUNC(buys_source_src_28000.ds, isoweek) AS ds__week
, TIMESTAMP_TRUNC(buys_source_src_28000.ds, month) AS ds__month
, TIMESTAMP_TRUNC(buys_source_src_28000.ds, quarter) AS ds__quarter
, TIMESTAMP_TRUNC(buys_source_src_28000.ds, year) AS ds__year
, EXTRACT(year FROM buys_source_src_28000.ds) AS ds__extract_year
, EXTRACT(quarter FROM buys_source_src_28000.ds) AS ds__extract_quarter
, EXTRACT(month FROM buys_source_src_28000.ds) AS ds__extract_month
, EXTRACT(day FROM buys_source_src_28000.ds) AS ds__extract_day
, IF(EXTRACT(dayofweek FROM buys_source_src_28000.ds) = 1, 7, EXTRACT(dayofweek FROM buys_source_src_28000.ds) - 1) AS ds__extract_dow
, EXTRACT(dayofyear FROM buys_source_src_28000.ds) AS ds__extract_doy
, DATETIME_TRUNC(buys_source_src_28000.ds_month, month) AS ds_month__month
, DATETIME_TRUNC(buys_source_src_28000.ds_month, quarter) AS ds_month__quarter
, DATETIME_TRUNC(buys_source_src_28000.ds_month, year) AS ds_month__year
, TIMESTAMP_TRUNC(buys_source_src_28000.ds_month, month) AS ds_month__month
, TIMESTAMP_TRUNC(buys_source_src_28000.ds_month, quarter) AS ds_month__quarter
, TIMESTAMP_TRUNC(buys_source_src_28000.ds_month, year) AS ds_month__year
, EXTRACT(year FROM buys_source_src_28000.ds_month) AS ds_month__extract_year
, EXTRACT(quarter FROM buys_source_src_28000.ds_month) AS ds_month__extract_quarter
, EXTRACT(month FROM buys_source_src_28000.ds_month) AS ds_month__extract_month
, DATETIME_TRUNC(buys_source_src_28000.ds, day) AS buy__ds__day
, DATETIME_TRUNC(buys_source_src_28000.ds, isoweek) AS buy__ds__week
, DATETIME_TRUNC(buys_source_src_28000.ds, month) AS buy__ds__month
, DATETIME_TRUNC(buys_source_src_28000.ds, quarter) AS buy__ds__quarter
, DATETIME_TRUNC(buys_source_src_28000.ds, year) AS buy__ds__year
, TIMESTAMP_TRUNC(buys_source_src_28000.ds, day) AS buy__ds__day
, TIMESTAMP_TRUNC(buys_source_src_28000.ds, isoweek) AS buy__ds__week
, TIMESTAMP_TRUNC(buys_source_src_28000.ds, month) AS buy__ds__month
, TIMESTAMP_TRUNC(buys_source_src_28000.ds, quarter) AS buy__ds__quarter
, TIMESTAMP_TRUNC(buys_source_src_28000.ds, year) AS buy__ds__year
, EXTRACT(year FROM buys_source_src_28000.ds) AS buy__ds__extract_year
, EXTRACT(quarter FROM buys_source_src_28000.ds) AS buy__ds__extract_quarter
, EXTRACT(month FROM buys_source_src_28000.ds) AS buy__ds__extract_month
, EXTRACT(day FROM buys_source_src_28000.ds) AS buy__ds__extract_day
, IF(EXTRACT(dayofweek FROM buys_source_src_28000.ds) = 1, 7, EXTRACT(dayofweek FROM buys_source_src_28000.ds) - 1) AS buy__ds__extract_dow
, EXTRACT(dayofyear FROM buys_source_src_28000.ds) AS buy__ds__extract_doy
, DATETIME_TRUNC(buys_source_src_28000.ds_month, month) AS buy__ds_month__month
, DATETIME_TRUNC(buys_source_src_28000.ds_month, quarter) AS buy__ds_month__quarter
, DATETIME_TRUNC(buys_source_src_28000.ds_month, year) AS buy__ds_month__year
, TIMESTAMP_TRUNC(buys_source_src_28000.ds_month, month) AS buy__ds_month__month
, TIMESTAMP_TRUNC(buys_source_src_28000.ds_month, quarter) AS buy__ds_month__quarter
, TIMESTAMP_TRUNC(buys_source_src_28000.ds_month, year) AS buy__ds_month__year
, EXTRACT(year FROM buys_source_src_28000.ds_month) AS buy__ds_month__extract_year
, EXTRACT(quarter FROM buys_source_src_28000.ds_month) AS buy__ds_month__extract_quarter
, EXTRACT(month FROM buys_source_src_28000.ds_month) AS buy__ds_month__extract_month
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ WITH sma_28019_cte AS (
-- Read Elements From Semantic Model 'visits_source'
-- Metric Time Dimension 'ds'
SELECT
DATETIME_TRUNC(ds, day) AS metric_time__day
TIMESTAMP_TRUNC(ds, day) AS metric_time__day
, user_id AS user
, 1 AS visits
FROM ***************************.fct_visits visits_source_src_28000
Expand Down Expand Up @@ -101,7 +101,7 @@ FROM (
-- Metric Time Dimension 'ds'
-- Add column with generated UUID
SELECT
DATETIME_TRUNC(ds, day) AS metric_time__day
TIMESTAMP_TRUNC(ds, day) AS metric_time__day
, user_id AS user
, 1 AS buys
, GENERATE_UUID() AS mf_internal_uuid
Expand Down
Loading
Loading