根据两个条件获取 BigQuery 中每个 user_id 的最新行

柳克

我有一个包含 3 个重要列的 Bigquery 表:

user_id, created_at, updated_at.

每个user_id可以有多个记录,例如:

+----------+------------+-------------+-----------------+
| user_id  | created_at | updated_at  |    task_name    |
+----------+------------+-------------+-----------------+
| user_1   | 2020-01-01 | 2020-01-02  | some_task_name1 |
| user_1   | 2020-01-01 | 2020-01-03  | some_task_name1 |
| user_1   | 2020-03-01 | 2020-03-01  | some_task_name1 |
| user_2   | 2020-01-01 | 2020-01-02  | some_task_name2 |
+----------+------------+-------------+-----------------+

对于每个user_id具有相同created_at值的记录,我想选择具有最新updated_at. 例如,在这个例子中,输出必须是:

    +----------+------------+-------------+-----------------+
    | user_id  | created_at | updated_at  |    task_name    |
    +----------+------------+-------------+-----------------+
    | user_1   | 2020-01-01 | 2020-01-03  | some_task_name1 |
    | user_1   | 2020-03-01 | 2020-03-01  | some_task_name1 |
    | user_2   | 2020-01-01 | 2020-01-02  | some_task_name2 |
    +----------+------------+-------------+-----------------+

我正在尝试这个,但我不知道如何为相同的条件添加条件created_at

SELECT
  agg.table.*
FROM (
  SELECT
    user_id,
    ARRAY_AGG(STRUCT(table)
    ORDER BY
      updated_at DESC)[SAFE_OFFSET(0)] agg
  FROM
    `dataset.my_table` table
  GROUP BY
    user_id)
米哈伊尔·贝里安特

考虑以下方法

select as value array_agg(t order by updated_at desc limit 1)[offset(0)]
from `project.dataset.table` t
group by user_id, created_at        

如果应用于您问题中的样本数据 - 输出为

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

可扩展解决方案,以获取BigQuery中每个ID的最新行

每个 user_id 包含最新数据的行

对于特定的user_id,在MySQL中获取该用户与所有其他用户所在的最新行(按时间)

如何获取数据库中特定行的相应user_id(自动增量)值?

如何从两个条件中获取最新日期?

BigQuery - 获取每个用户的最新数据

根据 PySpark 中的两个不同行,选择数据框中的行,其中 ID 必须具有两个条件

根据两个条件,为每个唯一ID返回多个COUNT字段,以获取不同的值

MySQL-根据具有相同user_id的其他行的列值,按user_id选择行

如何在 Oracle Apex 中获取当前 user_id

如何在google BigQuery中获取每个键的最后两行?

如何基于时间戳获取每个ID的最新行

在mysql中按月和user_id获取进行分组的每个月的总用户数

根据 Laravel 数据库中的 user_id 获取城市值

根据两个单独表中的条件从一个表中选择行

BigQuery嵌套重复模式中的每个“ ID”仅选择一行

HIVE SQL:每个user_id的最近三个日期的平均值

根据列中的条件删除行(保留两个值之间的行)

仅返回BigQuery表中包含重复项的最新行

根据Pandas Python中的两个条件选择数据框的行

如何根据两个条件过滤csv文件中的特定行?(使用熊猫)

从两个独立的数据库中根据多个条件选择行

如何根据user_id划分的其他列值计算行的差

根据Laravel Project中两个ID的组合从数据透视表中获取结果

如何联接表并根据其他两个列中的最新日期和条件显示列?

根据两个条件删除行

根据两个条件过滤行

BigQuery SQL根据条件从目标表中删除行

根据表 project_users 中的 user_ID 显示字段