我正在尝试计算两周之间的差异,但是在绘制结果时出现了一个奇怪的峰值( SQL / BigQuery )
Posted
技术标签:
【中文标题】我正在尝试计算两周之间的差异,但是在绘制结果时出现了一个奇怪的峰值( SQL / BigQuery )【英文标题】:I'm trying to calculate the difference between two weeks but I'm getting a weird peak when plotting the results ( SQL / BigQuery ) 【发布时间】:2019-03-04 16:28:33 【问题描述】:所以我有一张每日表格,其中包含每天每家商店的访客数量。
我的表格列是:
日期 商店 Number_of_Visitors Views :商店广告的浏览量。因此,我首先将我的表格汇总为每周表格,以便计算一周与下一周之间的差异。
我是这样定义方差的:
Variance = `Number Of Visitors in WEEK N+1 / Number of Visitors in WEEK N
为此我编写了以下查询(新表称为:每周)
SELECT
year_week,
min(date) as date,
Store,
SUM(Number_Of_Visitors) AS TOTAL_VISITORS
FROM (
SELECT
*,
CONCAT(cast((extract(YEAR from date)), LPAD(cast((extract(WEEK from date)) as string), 2, '0') ) AS year_week
FROM `my-project`)
GROUP BY
year_week, Store
ORDER BY year_week
然后,为了计算方差,我也使用了以下查询:
SELECT
base.*,
((base.TOTAL_VISITORS-lw.TOTAL_VISITORS)/lw.TOTAL_VISITORS) AS VAR_FF,
FROM
`weekly` base
JOIN (
SELECT
* EXCEPT (date),
DATE_ADD(DATE(TIMESTAMP(date)), INTERVAL 1 Week)AS n_date
FROM
`weekly` ) lw
ON
base.date = lw.n_date
AND base.Store= lw.Store
当我使用 Data Studio 绘制方差 (VAR_FF) 时,我得到以下图表,中间的高峰似乎没有意义;
【问题讨论】:
【参考方案1】:我认为您的代码应该如下所示:
SELECT date_trunc(date, week) as year_week,
Store,
SUM(Number_Of_Visitors) AS TOTAL_VISITORS,
(1 -
(LAG(SUM(Number_Of_Visitors)) OVER (PARTITION BY Store ORDER BY MIN(date) /
SUM(Number_Of_Visitors)
)
) as VAR_FF,
FROM`my-project`
GROUP BY year_week, Store
ORDER BY year_week;
我不确定你计算星期的奇怪计算到底在做什么。这是基于前一周的数据。
【讨论】:
错误:窗口 ORDER BY 表达式引用了在 [5:86] 处既不分组也不聚合的列日期(此行:ORDER BY date_trunc(date, WEEK))。这也促使我按日期分组以避免此错误:( 另外,我不认为我们在计算同一家商店两周之间的相同差异 :) @helloworld 。 . .奇怪的是,在这种情况下不接受该表达式。无论如何,MIN(date)
提供了相同的功能。以上是关于我正在尝试计算两周之间的差异,但是在绘制结果时出现了一个奇怪的峰值( SQL / BigQuery )的主要内容,如果未能解决你的问题,请参考以下文章
尝试在 Django 中的模型表之间建立关系。但是在插入值时出现错误 |外键项必须是一个实例