From b0c7eef42778bc1b5774642644e6accc4cc359c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Leszko?= Date: Thu, 4 Jan 2024 11:45:01 +0100 Subject: [PATCH 1/3] Fix returning nulls from /data/views/query if no data in BigQuery --- views/bigquery.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/views/bigquery.go b/views/bigquery.go index ee92988..f337b26 100644 --- a/views/bigquery.go +++ b/views/bigquery.go @@ -155,7 +155,7 @@ func (bq *bigqueryHandler) QueryViewsEvents(ctx context.Context, spec QuerySpec) func buildViewsEventsQuery(table string, spec QuerySpec) (string, []interface{}, error) { query := squirrel.Select( "countif(play_intent) as view_count", - "sum(playtime_ms) / 60000.0 as playtime_mins"). + "ifnull(sum(playtime_ms), 0) / 60000.0 as playtime_mins"). From(table). Where("account_id = ?", spec.Filter.UserID). Limit(maxBigQueryResultRows + 1) @@ -163,10 +163,10 @@ func buildViewsEventsQuery(table string, spec QuerySpec) (string, []interface{}, if spec.Detailed { query = query.Columns( - "avg(ttff_ms) as ttff_ms", - "avg(rebuffer_ratio) as rebuffer_ratio", - "avg(if(error_count > 0, 1, 0)) as error_rate", - "sum(if(exit_before_start, 1.0, 0.0)) as exits_before_start") + "ifnull(avg(ttff_ms), 0) as ttff_ms", + "ifnull(avg(rebuffer_ratio), 0) as rebuffer_ratio", + "ifnull(avg(if(error_count > 0, 1, 0)), 0) as error_rate", + "ifnull(sum(if(exit_before_start, 1.0, 0.0)), 0) as exits_before_start") } if creatorId := spec.Filter.CreatorID; creatorId != "" { From f54cb4b062df8d37bc35528a2f6282253da9ba81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Leszko?= Date: Thu, 4 Jan 2024 11:51:03 +0100 Subject: [PATCH 2/3] Fix returning nulls from /data/views/query if no data in BigQuery --- views/bigquery_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/bigquery_test.go b/views/bigquery_test.go index 5bca6d4..10d318b 100644 --- a/views/bigquery_test.go +++ b/views/bigquery_test.go @@ -23,7 +23,7 @@ func TestCallsBigQueryClient(t *testing.T) { _, err := bq.QueryViewsEvents(context.Background(), QuerySpec{}) require.ErrorContains(err, "dry-run") - require.Equal("SELECT countif(play_intent) as view_count, sum(playtime_ms) / 60000.0 as playtime_mins "+ + require.Equal("SELECT countif(play_intent) as view_count, ifnull(sum(playtime_ms), 0) / 60000.0 as playtime_mins "+ "FROM bq_events WHERE account_id = ? LIMIT 10001", receivedQuery) } From 204cf9ce7a8c52c165b43f97be7cd630df0c30dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Leszko?= Date: Fri, 5 Jan 2024 10:17:27 +0100 Subject: [PATCH 3/3] Revert back the metrics to null --- views/bigquery.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/views/bigquery.go b/views/bigquery.go index f337b26..c357d05 100644 --- a/views/bigquery.go +++ b/views/bigquery.go @@ -163,10 +163,10 @@ func buildViewsEventsQuery(table string, spec QuerySpec) (string, []interface{}, if spec.Detailed { query = query.Columns( - "ifnull(avg(ttff_ms), 0) as ttff_ms", - "ifnull(avg(rebuffer_ratio), 0) as rebuffer_ratio", - "ifnull(avg(if(error_count > 0, 1, 0)), 0) as error_rate", - "ifnull(sum(if(exit_before_start, 1.0, 0.0)), 0) as exits_before_start") + "avg(ttff_ms) as ttff_ms", + "avg(rebuffer_ratio) as rebuffer_ratio", + "avg(if(error_count > 0, 1, 0)) as error_rate", + "sum(if(exit_before_start, 1.0, 0.0)) as exits_before_start") } if creatorId := spec.Filter.CreatorID; creatorId != "" {