只需要确保在截断表之前,依赖于该表的物化视图上的所有数据也会被擦除吗?
此外,如果在该表上发生插入后重新创建(删除并再次创建)物化视图,源表的旧行是否会出现在物化视图上?
只需要确保在截断表之前,依赖于该表的物化视图上的所有数据也会被擦除吗?
此外,如果在该表上发生插入后重新创建(删除并再次创建)物化视图,源表的旧行是否会出现在物化视图上?
我在 BigQuery 中有一个表格,它跟踪从 2019 年 6 月开始的每个季度的支出金额。我需要计算年同比和月同比百分比变化。我已经提到了他们两个的适当公式。对 YoY 和 MoM 跨行执行计算对我来说有点棘手。有人可以帮忙吗?
桌子:
period report_date spend_dollar
30-jun-19 2019-06-30 5022087
30-sept-19 2019-09-30 4958617
31-dec-19 2019-09-30 5038630
31-mar-20 2020-03-31 5156327
30-jun-20 2020-06-30 5344183
30-sept-20 2020-09-30 5562796
31-dec-20 2020-12-31 5696796
31-mar-21. 2021-03-31 5749467
30-jun-20. 2021-06-30 5680087
同比预期产出:
period report_date spend_dollar. year_over_year
30-jun-19 2019-06-30 5022087 -
30-sept-19 2019-09-30 4958617 -
31-dec-19 2019-09-30 5038630 -
31-mar-20 2020-03-31 5156327 -
30-jun-20 2020-06-30 5344183 6.4
30-sept-20 2020-09-30 5562796 12.18
31-dec-20 2020-12-31 5696796 13.1
31-mar-21. 2021-03-31 5749467 11.5
30-jun-20. 2021-06-30 5680087 6.3
YoY formula example formula:
((spend_dollar value for date 2021-06-30/spend_dollar for date 2020--06-30)-1)*100,
((spend_dollar value for date 2020-03-30/spend_dollar for date 2020--03-30)-1)*100
..
月度预期产出:
period report_date spend_dollar. month_over_month
30-jun-19 2019-06-30 5022087 -
30-sept-19 2019-09-30 4958617. -1.2
31-dec-19 2019-09-30 5038630. 1.6
31-mar-20 2020-03-31 5156327 2.3
30-jun-20 2020-06-30 5344183. 6.4
30-sept-20 2020-09-30 5562796. 4.1
31-dec-20 2020-12-31 5696796 2.4
31-mar-21. 2021-03-31 5749467 0.092
30-jun-20. 2021-06-30 5680087 -1.2
Month-over-Month example formula:
((spend_dollar value for date 2021-06-30/spend_dollar for date 2021--03-30)-1)*100 ,
((spend_dollar value for date 2021-03-30/spend_dollar for date 2020--12-31)-1)*100
..
我试图了解 UNNEST 运算符如何在存储CRUX 数据(Chrome UX 报告)的 Google 的公共数据库上工作。
在此页面上提供了一些示例。
我可以理解以下内容:
本文提供了一些使用 UNNEST 运算符的示例,该运算符扩展了最里面的数组,从而也可以进行分组操作。
所以像下面这样的查询
SELECT
SUM(fcp.density) AS fast_fcp
FROM
`chrome-ux-report.all.201809`,
UNNEST(first_contentful_paint.histogram.bin) AS fcp
WHERE
origin = 'https://developers.google.com'
返回所有 FCP 密度的总和,值为 0.999999。
我本来希望第二个 SUM 在第二个 UNNESTED 运算符上的工作类似;但是,当我使用两个字段并进行求和时,会发生一些奇怪的事情。
例如以下
SELECT
SUM(fcp.density) AS fast_fcp,
SUM(lcp.density) AS fast_lcp
FROM
`chrome-ux-report.all.201809`,
UNNEST(first_contentful_paint.histogram.bin) AS fcp
UNNEST(largest_contentful_paint.histogram.bin) AS lcp
WHERE
origin = 'https://developers.google.com'
产生类似的东西
Row f0_ f1_
1 393.12850000000896 352.06599999922156
奇怪的是,如果不使用聚合,unnest 运算符会按预期工作,并且列会按预期在列中展开。
有人可以帮助我了解门后发生的事情以及如何获得一系列领域的总和。
例如
Site;fcp;cls;fid
https://developers.google.com;0.4;0.2;0.1
https://www.google.com;0.1;0.4;0.3
最终目标将是选择一个起始值的底层括号来找出“好”的网站,但我需要先确定为什么上述方法不起作用。
我需要获得每周留存用户。如果用户在第 4 周进行了交易,则该用户在第 0 周、第 1 周、第 2 周、第 3 周、第 4 周时在那里。
如果用户在第 0 周和第 3 周进行了交易,那么用户将在第 0 周、第 1 周、第 2 周、第 3 周到达谢谢@bbaird,
我正在用准确的信息和问题更新问题
这是我的表格数据
TxnId | 用户身份 | 交易周 |
---|---|---|
T1 | U1 | 0 |
T2 | U2 | 0 |
T3 | U3 | 0 |
T4 | U4 | 0 |
T5 | U1 | 0 |
T6 | U2 | 0 |
T7 | U6 | 0 |
T8 | U1 | 1 |
T9 | U8 | 1 |
T10 | U12 | 1 |
T11 | U3 | 1 |
T12 | U5 | 1 |
T13 | U9 | 2 |
T14 | U15 | 2 |
T15 | U20 | 3 |
T16 | U15 | 3 |
T17 | U15 | 3 |
T18 | U8 | 3 |
T19 | U9 | 4 |
T20 | U20 | 5 |
我正在寻找的结果
星期 | active_users_count |
---|---|
0 | 11 |
1 | 8 |
2 | 4 |
3 | 4 |
4 | 2 |
5 | 1 |
用户数有点累积但唯一的用户。
例如,如果用户 1 在第 0 周执行了 3 次事务,则第 0 周的计数为 1
如果用户 1 在第 0 周执行了 3 次交易,在第 2 周执行了 2 次交易,在第 3 周执行了 1 次交易,那么计数将是这样的
week-0 -> 1(即他已执行交易 >= 第 0 周)
第 1 周 -> 1(即他已执行交易 >= 第 1 周)
第 2 周 -> 1(即他已执行交易 >= 第 2 周)
第 3 周 -> 1(即他已执行交易 >= 第 3 周)
可以有任意周数。它不固定为 4 周或 8 周。
我有一张如下表
user timestamp counts
xyz 01-01-2020 00:05:00 12
xyz 01-01-2020 00:10:00 11
xyz 01-01-2020 00:15:00 45
xyz 01-01-2020 00:20:00 0
xyz 01-01-2020 00:25:00 0
xyz 01-01-2020 00:30:00 13
xyz 01-01-2020 00:35:00 12
xyz 01-01-2020 00:40:00 0
我想根据计数列中的最大连续值(非零)值对其进行切片,并找出该持续时间内的开始时间戳、结束时间戳和总计数
starttime endtime total_count
01-01-2020 00:05:00 01-01-2020 00:15:00 68
如何使用 BigQuery 实现这一目标
这是一个很大的问题。如果无法通过论坛给出具体的解决方案,我正在寻找可能的总体方向,可能的解决方案。我在 BigQuery 中工作,但语法几乎与 SQL 相同,但某些函数除外。我对高级 SQL 比较陌生,我的任务是创建以下报告:
从下表:
报告需要通过 Google Data Studio 呈现,其中无法进行数据建模,因此必须提前在 SQL 中准备数据,然后才能加载到 Data Studio 中,Data Studio 将是可视化/呈现工具。
我的想法是为每个所需的时间段编写一个查询,然后将所有这些查询联合起来,例如,“上周”作为一个时间段的查询将是:
SELECT distinct orderid,
net_revenue,
country,
main_category, sub_cat, sub_sub_cat --there's several nested categories
'last week' as period,
FROM table_orders
join table_order_values
on table_orders.orderid = table_order_values.orderid
full outer join categories as cats
on cats.product_id = table_orders.product_id
join countries
on table_order_values.country = countries.country
and table_order_values.date >
DATE_SUB(DATE_TRUNC(CURRENT_DATE(), WEEK(sunday)), INTERVAL 1 WEEK)
AND table_order_values.date <=
DATE_TRUNC(CURRENT_DATE(), WEEK(sunday))
...在 UNION ALL 之后的不同时期的一堆表格的最终表格看起来像这样:
但是,对于这个最终表,我不知道如何获得每个时期的增长百分比(因此比较月比月或周比周等),或者如何正确计算子类别的收入占总收入的百分比(以及不是每个时期都有一堆声明的变量),甚至更难 - 从主要类别中获得任何子类别的收入百分比,然后还需要按国家/地区过滤......
这甚至可能是要求的方式吗?我是否可以从一开始就以某种方式重组数据,以使这些百分比占总数、主要类别和一段时间内的增长成为可能?
我在 BigQuery 中有一个如下所示的表:
schema = [
bigquery.SchemaField('timestamp', 'TIMESTAMP', mode='REQUIRED', description='Data point timestamp'),
bigquery.SchemaField('event_id', 'STRING', description='EventID'),
[...]
]
该表有一个相当大的数据集,我试图找到一个有效的查询,它返回过去 24 小时内以及过去 N 天内发生的事件数。即两条不同的记录,条件不同但相同event_id
。我不太关心实际的event_id
,而是分布。
理想情况下,查询将返回如下内容:
7_days: 20
30_days: 15
60_days: 7
如果在纯 SQL 中无法做到这一点,我也可以使用 Pandas。
基本上我在 BQ 中有两种不同类型的查询。第一个:
select q2.name, q1.* , q2.val1 from table1 as q1
inner join
(select name,val1, val2 from table2) as q2
on q1.name = q2.name
第二个是:
select q2.name, q1.* , q2.val1 from table1 as q1
inner join
(select name,val1, val2 from table2 where val1 = "X") as q2
on q1.name = q2.name
如您所见,唯一的区别是过滤 X 值。当我过滤 table2 内的 X 值时,table2 的大小几乎是一半。因此,当我应用“where”子句时,我的期望是减少数据字节。但是,当我--dry_run
在 BQ cli 中运行时。我得到了完全相同的数据字节。
Query successfully validated. Assuming the tables are not modified, running this query will process 6958332498714 bytes of data.
那么有人可以解释为什么我得到完全相同的处理数据大小吗?
我目前正在研究 bigquery(标准 sql),其中有一个timestamp
字段,我想将其转换为date and time
2 个单独的列。我试过这样做select EXTRACT(DATE FROM timestamp) from table
。
我也试过投射timestamp
到date
,但它给了我一个错误。任何建议将不胜感激
Input
timestamp
1539167364779001
1542242226310005
1544881556726002
Expected output
date time
10/10/2018 3:59:24 PM
11/15/2018 6:07:06 AM
12/15/2018 7:15:56 PM
我正在阅读这篇关于Google BigQuery的文章:
他们使用了几个函数,我试图弄清楚 Oracle 的等价物是什么,如果它们存在的话。
我正在研究 Oracle 文档,发现类似于ARRAY_AGG
Oracle 中称为LISTAGG
.
STRUCT
有没有和UNNEST
我必须自己写的东西做同样的事情的东西?