使用 BigQuery,我需要找出“上周一”是什么时候。我如何计算这个日期?
例如,今天是星期一,所以如果调用该公式应该返回今天的日期。昨天它应该返回上个月的 27 号。
基于https://blog.svpino.com/2015/08/03/how-to-determine-last-mondays-date-in-bigquery
我目前正在尝试根据自定义条件对结果进行排名。让我们假设我的数据如下所示:
col1 col2 col3
-----------------------
1 1 2
1 3 33
2 4 5
3 6 40
1 2 5
3 5 10
Run Code Online (Sandbox Code Playgroud)
我现在想按 col1 分组并按 col2 排序,然后对结果进行排名。但是,我只想在 col3 大于 30 时提高排名。因此结果应如下所示:
col1 col2 col3 rank
-----------------------------
1 1 2 1
1 2 5 1
1 3 33 2
2 4 5 1
3 5 10 1
3 6 40 2
Run Code Online (Sandbox Code Playgroud)
我只是找不到解决问题的优雅方法。如果我只使用经典排名,那么整个事情当然行不通;例如:
RANK() OVER (PARTITION BY col1 ORDER BY col2)
如果可能的话,由于性能问题,我想在这里使用窗口函数。我也在 Google 的 Bigquery 环境中工作。
我正在尝试获取特定日期的唯一事件数量,回溯 90/30/7 天。我已经使用下面的查询处理了有限数量的行,但是对于大型数据集,我从聚合字符串中得到内存错误,该错误变得很大。
我正在寻找一种更有效的方法来实现相同的结果。
表看起来像这样:
+---+------------+-------------+
| | date | userid |
+---+------------+-------------+
| 1 | 2013-05-14 | xxxxx |
| 2 | 2017-03-14 | xxxxx |
| 3 | 2018-01-24 | xxxxx |
| 4 | 2013-03-21 | xxxxx |
| 5 | 2014-03-19 | xxxxx |
| 6 | 2015-09-03 | xxxxx |
| 7 | 2014-02-06 | xxxxx |
| 8 | 2014-10-30 | xxxxx |
| ..| ... | ... |
+---+------------+-------------+
Run Code Online (Sandbox Code Playgroud)
所需结果的格式:
+---+------------+---------------------------------------------+
| | …Run Code Online (Sandbox Code Playgroud) 我有一个包含 600M 行的表,我想删除其中 id 来自另一个表的行的子集。
删除行或重新创建表会更有效吗?
(基于 dbt Slack 上的讨论)
目前,我正在使用以下查询:SELECT ID,Key FROM
mydataset.mytable
,其中ID = 100077113?和Key ='06019'
ID-唯一
如果我知道查找ID的键,则可以在大约10,000行上完成,并且工作更快,并且处理的数据更少。
如何在BigQuery中使用新的集群功能来对字段Key进行分区?
sql ×4
optimization ×1
oracle ×1
partition ×1
reddit ×1
snowflake-cloud-data-platform ×1
sql-delete ×1