-
Notifications
You must be signed in to change notification settings - Fork 97
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
SQL rendering tests for no-metric queries with custom granularity (#1411
) Tests for no-metric queries with custom granularities. Does not include tests with filters (coming later). If you have suggestions for additional no-metric scenarios that should be tested, please let me know! Note that there is a bug in the optimization for one of these tests. I have a task to fix this up stack.
- Loading branch information
1 parent
727a380
commit adf7a97
Showing
43 changed files
with
4,627 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
441 changes: 441 additions & 0 deletions
441
...eryPlan/BigQuery/test_no_metric_custom_granularity_joined_to_non_default_grain__plan0.sql
Large diffs are not rendered by default.
Oops, something went wrong.
25 changes: 25 additions & 0 deletions
25
...gQuery/test_no_metric_custom_granularity_joined_to_non_default_grain__plan0_optimized.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
-- Join Standard Outputs | ||
-- Join to Custom Granularity Dataset | ||
-- Join to Custom Granularity Dataset | ||
-- Pass Only Elements: ['metric_time__day', 'metric_time__martian_day', 'user__bio_added_ts__martian_day', 'user__bio_added_ts__month'] | ||
SELECT | ||
subq_12.martian_day AS user__bio_added_ts__martian_day | ||
, subq_11.martian_day AS metric_time__martian_day | ||
, DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, month) AS user__bio_added_ts__month | ||
, DATETIME_TRUNC(time_spine_src_28006.ds, day) AS metric_time__day | ||
FROM ***************************.dim_users users_ds_source_src_28000 | ||
CROSS JOIN | ||
***************************.mf_time_spine time_spine_src_28006 | ||
LEFT OUTER JOIN | ||
***************************.mf_time_spine subq_11 | ||
ON | ||
subq_7.metric_time__day = subq_11.ds | ||
LEFT OUTER JOIN | ||
***************************.mf_time_spine subq_12 | ||
ON | ||
DATETIME_TRUNC(users_ds_source_src_28000.bio_added_ts, day) = subq_12.ds | ||
GROUP BY | ||
user__bio_added_ts__martian_day | ||
, metric_time__martian_day | ||
, user__bio_added_ts__month | ||
, metric_time__day |
56 changes: 56 additions & 0 deletions
56
...ularity.py/SqlQueryPlan/BigQuery/test_no_metric_custom_granularity_metric_time__plan0.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
-- Pass Only Elements: ['metric_time__martian_day',] | ||
SELECT | ||
subq_2.metric_time__martian_day | ||
FROM ( | ||
-- Metric Time Dimension 'ds' | ||
-- Join to Custom Granularity Dataset | ||
SELECT | ||
subq_0.ds__day AS ds__day | ||
, subq_0.ds__week AS ds__week | ||
, subq_0.ds__month AS ds__month | ||
, subq_0.ds__quarter AS ds__quarter | ||
, subq_0.ds__year AS ds__year | ||
, subq_0.ds__extract_year AS ds__extract_year | ||
, subq_0.ds__extract_quarter AS ds__extract_quarter | ||
, subq_0.ds__extract_month AS ds__extract_month | ||
, subq_0.ds__extract_day AS ds__extract_day | ||
, subq_0.ds__extract_dow AS ds__extract_dow | ||
, subq_0.ds__extract_doy AS ds__extract_doy | ||
, subq_0.ds__martian_day AS ds__martian_day | ||
, subq_0.ds__day AS metric_time__day | ||
, subq_0.ds__week AS metric_time__week | ||
, subq_0.ds__month AS metric_time__month | ||
, subq_0.ds__quarter AS metric_time__quarter | ||
, subq_0.ds__year AS metric_time__year | ||
, subq_0.ds__extract_year AS metric_time__extract_year | ||
, subq_0.ds__extract_quarter AS metric_time__extract_quarter | ||
, subq_0.ds__extract_month AS metric_time__extract_month | ||
, subq_0.ds__extract_day AS metric_time__extract_day | ||
, subq_0.ds__extract_dow AS metric_time__extract_dow | ||
, subq_0.ds__extract_doy AS metric_time__extract_doy | ||
, subq_0.ds__martian_day AS metric_time__martian_day | ||
, subq_1.martian_day AS metric_time__martian_day | ||
FROM ( | ||
-- Time Spine | ||
SELECT | ||
DATETIME_TRUNC(time_spine_src_28006.ds, day) AS ds__day | ||
, DATETIME_TRUNC(time_spine_src_28006.ds, isoweek) AS ds__week | ||
, DATETIME_TRUNC(time_spine_src_28006.ds, month) AS ds__month | ||
, DATETIME_TRUNC(time_spine_src_28006.ds, quarter) AS ds__quarter | ||
, DATETIME_TRUNC(time_spine_src_28006.ds, year) AS ds__year | ||
, EXTRACT(year FROM time_spine_src_28006.ds) AS ds__extract_year | ||
, EXTRACT(quarter FROM time_spine_src_28006.ds) AS ds__extract_quarter | ||
, EXTRACT(month FROM time_spine_src_28006.ds) AS ds__extract_month | ||
, EXTRACT(day FROM time_spine_src_28006.ds) AS ds__extract_day | ||
, IF(EXTRACT(dayofweek FROM time_spine_src_28006.ds) = 1, 7, EXTRACT(dayofweek FROM time_spine_src_28006.ds) - 1) AS ds__extract_dow | ||
, EXTRACT(dayofyear FROM time_spine_src_28006.ds) AS ds__extract_doy | ||
, time_spine_src_28006.martian_day AS ds__martian_day | ||
FROM ***************************.mf_time_spine time_spine_src_28006 | ||
) subq_0 | ||
LEFT OUTER JOIN | ||
***************************.mf_time_spine subq_1 | ||
ON | ||
subq_0.metric_time__day = subq_1.ds | ||
) subq_2 | ||
GROUP BY | ||
metric_time__martian_day |
12 changes: 12 additions & 0 deletions
12
.../SqlQueryPlan/BigQuery/test_no_metric_custom_granularity_metric_time__plan0_optimized.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
-- Metric Time Dimension 'ds' | ||
-- Join to Custom Granularity Dataset | ||
-- Pass Only Elements: ['metric_time__martian_day',] | ||
SELECT | ||
subq_4.martian_day AS metric_time__martian_day | ||
FROM ***************************.mf_time_spine time_spine_src_28006 | ||
LEFT OUTER JOIN | ||
***************************.mf_time_spine subq_4 | ||
ON | ||
subq_3.metric_time__day = subq_4.ds | ||
GROUP BY | ||
metric_time__martian_day |
104 changes: 104 additions & 0 deletions
104
...ity.py/SqlQueryPlan/BigQuery/test_no_metric_custom_granularity_non_metric_time__plan0.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
-- Pass Only Elements: ['booking__ds__martian_day',] | ||
SELECT | ||
subq_1.booking__ds__martian_day | ||
FROM ( | ||
-- Read Elements From Semantic Model 'bookings_source' | ||
-- Join to Custom Granularity Dataset | ||
SELECT | ||
1 AS bookings | ||
, CASE WHEN is_instant THEN 1 ELSE 0 END AS instant_bookings | ||
, bookings_source_src_28000.booking_value AS booking_value | ||
, bookings_source_src_28000.booking_value AS max_booking_value | ||
, bookings_source_src_28000.booking_value AS min_booking_value | ||
, bookings_source_src_28000.guest_id AS bookers | ||
, bookings_source_src_28000.booking_value AS average_booking_value | ||
, bookings_source_src_28000.booking_value AS booking_payments | ||
, CASE WHEN referrer_id IS NOT NULL THEN 1 ELSE 0 END AS referred_bookings | ||
, bookings_source_src_28000.booking_value AS median_booking_value | ||
, bookings_source_src_28000.booking_value AS booking_value_p99 | ||
, bookings_source_src_28000.booking_value AS discrete_booking_value_p99 | ||
, bookings_source_src_28000.booking_value AS approximate_continuous_booking_value_p99 | ||
, bookings_source_src_28000.booking_value AS approximate_discrete_booking_value_p99 | ||
, bookings_source_src_28000.is_instant AS is_instant | ||
, DATETIME_TRUNC(bookings_source_src_28000.ds, day) AS ds__day | ||
, DATETIME_TRUNC(bookings_source_src_28000.ds, isoweek) AS ds__week | ||
, DATETIME_TRUNC(bookings_source_src_28000.ds, month) AS ds__month | ||
, DATETIME_TRUNC(bookings_source_src_28000.ds, quarter) AS ds__quarter | ||
, DATETIME_TRUNC(bookings_source_src_28000.ds, year) AS ds__year | ||
, EXTRACT(year FROM bookings_source_src_28000.ds) AS ds__extract_year | ||
, EXTRACT(quarter FROM bookings_source_src_28000.ds) AS ds__extract_quarter | ||
, EXTRACT(month FROM bookings_source_src_28000.ds) AS ds__extract_month | ||
, EXTRACT(day FROM bookings_source_src_28000.ds) AS ds__extract_day | ||
, IF(EXTRACT(dayofweek FROM bookings_source_src_28000.ds) = 1, 7, EXTRACT(dayofweek FROM bookings_source_src_28000.ds) - 1) AS ds__extract_dow | ||
, EXTRACT(dayofyear FROM bookings_source_src_28000.ds) AS ds__extract_doy | ||
, DATETIME_TRUNC(bookings_source_src_28000.ds_partitioned, day) AS ds_partitioned__day | ||
, DATETIME_TRUNC(bookings_source_src_28000.ds_partitioned, isoweek) AS ds_partitioned__week | ||
, DATETIME_TRUNC(bookings_source_src_28000.ds_partitioned, month) AS ds_partitioned__month | ||
, DATETIME_TRUNC(bookings_source_src_28000.ds_partitioned, quarter) AS ds_partitioned__quarter | ||
, DATETIME_TRUNC(bookings_source_src_28000.ds_partitioned, year) AS ds_partitioned__year | ||
, EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_year | ||
, EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_quarter | ||
, EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_month | ||
, EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_day | ||
, IF(EXTRACT(dayofweek FROM bookings_source_src_28000.ds_partitioned) = 1, 7, EXTRACT(dayofweek FROM bookings_source_src_28000.ds_partitioned) - 1) AS ds_partitioned__extract_dow | ||
, EXTRACT(dayofyear FROM bookings_source_src_28000.ds_partitioned) AS ds_partitioned__extract_doy | ||
, DATETIME_TRUNC(bookings_source_src_28000.paid_at, day) AS paid_at__day | ||
, DATETIME_TRUNC(bookings_source_src_28000.paid_at, isoweek) AS paid_at__week | ||
, DATETIME_TRUNC(bookings_source_src_28000.paid_at, month) AS paid_at__month | ||
, DATETIME_TRUNC(bookings_source_src_28000.paid_at, quarter) AS paid_at__quarter | ||
, DATETIME_TRUNC(bookings_source_src_28000.paid_at, year) AS paid_at__year | ||
, EXTRACT(year FROM bookings_source_src_28000.paid_at) AS paid_at__extract_year | ||
, EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS paid_at__extract_quarter | ||
, EXTRACT(month FROM bookings_source_src_28000.paid_at) AS paid_at__extract_month | ||
, EXTRACT(day FROM bookings_source_src_28000.paid_at) AS paid_at__extract_day | ||
, IF(EXTRACT(dayofweek FROM bookings_source_src_28000.paid_at) = 1, 7, EXTRACT(dayofweek FROM bookings_source_src_28000.paid_at) - 1) AS paid_at__extract_dow | ||
, EXTRACT(dayofyear FROM bookings_source_src_28000.paid_at) AS paid_at__extract_doy | ||
, bookings_source_src_28000.is_instant AS booking__is_instant | ||
, DATETIME_TRUNC(bookings_source_src_28000.ds, day) AS booking__ds__day | ||
, DATETIME_TRUNC(bookings_source_src_28000.ds, isoweek) AS booking__ds__week | ||
, DATETIME_TRUNC(bookings_source_src_28000.ds, month) AS booking__ds__month | ||
, DATETIME_TRUNC(bookings_source_src_28000.ds, quarter) AS booking__ds__quarter | ||
, DATETIME_TRUNC(bookings_source_src_28000.ds, year) AS booking__ds__year | ||
, EXTRACT(year FROM bookings_source_src_28000.ds) AS booking__ds__extract_year | ||
, EXTRACT(quarter FROM bookings_source_src_28000.ds) AS booking__ds__extract_quarter | ||
, EXTRACT(month FROM bookings_source_src_28000.ds) AS booking__ds__extract_month | ||
, EXTRACT(day FROM bookings_source_src_28000.ds) AS booking__ds__extract_day | ||
, IF(EXTRACT(dayofweek FROM bookings_source_src_28000.ds) = 1, 7, EXTRACT(dayofweek FROM bookings_source_src_28000.ds) - 1) AS booking__ds__extract_dow | ||
, EXTRACT(dayofyear FROM bookings_source_src_28000.ds) AS booking__ds__extract_doy | ||
, DATETIME_TRUNC(bookings_source_src_28000.ds_partitioned, day) AS booking__ds_partitioned__day | ||
, DATETIME_TRUNC(bookings_source_src_28000.ds_partitioned, isoweek) AS booking__ds_partitioned__week | ||
, DATETIME_TRUNC(bookings_source_src_28000.ds_partitioned, month) AS booking__ds_partitioned__month | ||
, DATETIME_TRUNC(bookings_source_src_28000.ds_partitioned, quarter) AS booking__ds_partitioned__quarter | ||
, DATETIME_TRUNC(bookings_source_src_28000.ds_partitioned, year) AS booking__ds_partitioned__year | ||
, EXTRACT(year FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_year | ||
, EXTRACT(quarter FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_quarter | ||
, EXTRACT(month FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_month | ||
, EXTRACT(day FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_day | ||
, IF(EXTRACT(dayofweek FROM bookings_source_src_28000.ds_partitioned) = 1, 7, EXTRACT(dayofweek FROM bookings_source_src_28000.ds_partitioned) - 1) AS booking__ds_partitioned__extract_dow | ||
, EXTRACT(dayofyear FROM bookings_source_src_28000.ds_partitioned) AS booking__ds_partitioned__extract_doy | ||
, DATETIME_TRUNC(bookings_source_src_28000.paid_at, day) AS booking__paid_at__day | ||
, DATETIME_TRUNC(bookings_source_src_28000.paid_at, isoweek) AS booking__paid_at__week | ||
, DATETIME_TRUNC(bookings_source_src_28000.paid_at, month) AS booking__paid_at__month | ||
, DATETIME_TRUNC(bookings_source_src_28000.paid_at, quarter) AS booking__paid_at__quarter | ||
, DATETIME_TRUNC(bookings_source_src_28000.paid_at, year) AS booking__paid_at__year | ||
, EXTRACT(year FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_year | ||
, EXTRACT(quarter FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_quarter | ||
, EXTRACT(month FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_month | ||
, EXTRACT(day FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_day | ||
, IF(EXTRACT(dayofweek FROM bookings_source_src_28000.paid_at) = 1, 7, EXTRACT(dayofweek FROM bookings_source_src_28000.paid_at) - 1) AS booking__paid_at__extract_dow | ||
, EXTRACT(dayofyear FROM bookings_source_src_28000.paid_at) AS booking__paid_at__extract_doy | ||
, bookings_source_src_28000.listing_id AS listing | ||
, bookings_source_src_28000.guest_id AS guest | ||
, bookings_source_src_28000.host_id AS host | ||
, bookings_source_src_28000.listing_id AS booking__listing | ||
, bookings_source_src_28000.guest_id AS booking__guest | ||
, bookings_source_src_28000.host_id AS booking__host | ||
, subq_0.martian_day AS booking__ds__martian_day | ||
FROM ***************************.fct_bookings bookings_source_src_28000 | ||
LEFT OUTER JOIN | ||
***************************.mf_time_spine subq_0 | ||
ON | ||
bookings_source_src_28000.booking__ds__day = subq_0.ds | ||
) subq_1 | ||
GROUP BY | ||
booking__ds__martian_day |
12 changes: 12 additions & 0 deletions
12
...QueryPlan/BigQuery/test_no_metric_custom_granularity_non_metric_time__plan0_optimized.sql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
-- Read Elements From Semantic Model 'bookings_source' | ||
-- Join to Custom Granularity Dataset | ||
-- Pass Only Elements: ['booking__ds__martian_day',] | ||
SELECT | ||
subq_2.martian_day AS booking__ds__martian_day | ||
FROM ***************************.fct_bookings bookings_source_src_28000 | ||
LEFT OUTER JOIN | ||
***************************.mf_time_spine subq_2 | ||
ON | ||
bookings_source_src_28000.booking__ds__day = subq_2.ds | ||
GROUP BY | ||
booking__ds__martian_day |
Oops, something went wrong.