google visual data studio 中的 bigquery 错误声明变量

google bigquery in visual data studio error declare variable

我在 google BigQuery 上查询相同的代码,它 运行 在 google bigquery 上很好,然后我复制到 visual data studio,它有错误 "Data set configuration error",我不明白这个错误 enter image description here ,请帮助我。 我认为问题的原因是在 BigQuery 中声明变量

DECLARE yesterday date;
DECLARE count_week01 INT64;--number user active in (last week -1)
DECLARE count_week0 INT64;--number user active in (last week)
DECLARE retention FLOAT64; -- % user has already actived
DECLARE churn_rate FLOAT64; -- % user has already leaved
DECLARE count_user_active_week0 INT64; -- % user has leave
DECLARE week0_begin string; --date begin of last week
DECLARE week0_end string; --date end of last week

DECLARE week01_begin string; --date begin of (last week - 1)
DECLARE week01_end string; --date end of (last week -1)

SET yesterday =  DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY);

--Set value for last week from yesterday
SET week0_begin =  FORMAT_DATE('%Y%m%d', DATE_ADD(yesterday, INTERVAL -6 DAY));
SET week0_end = FORMAT_DATE('%Y%m%d', yesterday);
--Set value for (last week -1) from yesterday
SET week01_begin =  FORMAT_DATE('%Y%m%d', DATE_ADD(yesterday, INTERVAL -13 DAY));
SET week01_end =   FORMAT_DATE('%Y%m%d', DATE_ADD(yesterday, INTERVAL -7 DAY));

--Count number user active time in last week -1
SET count_week01 = (SELECT COUNT(DISTINCT param.value.string_value) as phone
FROM  `analytics_223664948.events_*` ev,
UNNEST(event_params) AS param
WHERE ev.event_name = 'spl_active_time' and param.key = 'PhoneNumber' AND _TABLE_SUFFIX BETWEEN week01_begin AND week01_end);

--Count number user active time in last week
SET count_week0 = (SELECT COUNT(DISTINCT param.value.string_value) as phone
FROM  `analytics_223664948.events_*` ev,
UNNEST(event_params) AS param
WHERE ev.event_name = 'spl_active_time' and param.key = 'PhoneNumber' AND _TABLE_SUFFIX BETWEEN week0_begin AND week0_end);

--Join last week and last week -1
SET count_user_active_week0 = (SELECT COUNT(week0.phone) FROM
(
  (SELECT DISTINCT param.value.string_value as phone
  FROM  `analytics_223664948.events_*` ev,
  UNNEST(event_params) AS param
  WHERE ev.event_name = 'spl_active_time' and param.key = 'PhoneNumber' AND _TABLE_SUFFIX BETWEEN week0_begin AND week0_end) week0
  INNER JOIN 
  (SELECT DISTINCT param.value.string_value as phone
  FROM  `analytics_223664948.events_*` ev,
  UNNEST(event_params) AS param
  WHERE ev.event_name = 'spl_active_time' and param.key = 'PhoneNumber' AND _TABLE_SUFFIX BETWEEN week01_begin AND week01_end) week01
  ON week0.phone = week01.phone 
)
);
SET retention = 100*count_user_active_week0/count_week01;
SET churn_rate = 100 - retention;

SELECT week01_begin, week01_end, week0_begin, week0_end, count_week0, count_week01, retention, churn_rate

您可以使用 with ...as change for DECLARE