Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google bigquery BigQuery在分组id时获取最新记录,按日期排序_Google Bigquery - Fatal编程技术网

Google bigquery BigQuery在分组id时获取最新记录,按日期排序

Google bigquery BigQuery在分组id时获取最新记录,按日期排序,google-bigquery,Google Bigquery,我已经将一个票务系统连接到BigQuery,现在我想输出一个报告 我遇到的问题是,票子上的每个回复都被添加到新的一行。大概是这样的: ticket_id | subject | status | date 1 | help | open | 2019-08-01 1 | help | closed | 2019-08-02 2 | problem | open | 2019-08-01 2 |

我已经将一个票务系统连接到BigQuery,现在我想输出一个报告

我遇到的问题是,票子上的每个回复都被添加到新的一行。大概是这样的:

ticket_id | subject | status | date
1         | help    | open      | 2019-08-01
1         | help    | closed    | 2019-08-02
2         | problem | open      | 2019-08-01
2         | problem | open      | 2019-08-02
2         | problem | open      | 2019-08-03
2         | problem | open      | 2019-08-04
期望输出:

ticket_id | subject | status    | date
1         | help    | closed    | 2019-08-02
2         | problem | open      | 2019-08-04
我使用什么查询来获得所需的输出? 我试过这样的东西

SELECT * FROM [table_name] 
ORDER BY date
GROUP BY ticket_id
但我得到了一个错误:

选择列表表达式引用的列状态既不是 在[1:12]分组或聚合


下面是BigQuery标准SQL

#standardSQL
SELECT AS VALUE ARRAY_AGG(t ORDER BY `date` DESC LIMIT 1)[OFFSET(0)]
FROM `project.dataset.table` t
GROUP BY ticket_id
您可以使用问题中的样本数据测试、播放上述内容,如下例所示

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 1 ticket_id, 'help' subject, 'open' status, DATE '2019-08-01' `date` UNION ALL
  SELECT 1, 'help', 'closed', '2019-08-02' UNION ALL
  SELECT 2, 'problem', 'open', '2019-08-01' UNION ALL
  SELECT 2, 'problem', 'open', '2019-08-02' UNION ALL
  SELECT 2, 'problem', 'open', '2019-08-03' UNION ALL
  SELECT 2, 'problem', 'open', '2019-08-04' 
)
SELECT AS VALUE ARRAY_AGG(t ORDER BY `date` DESC LIMIT 1)[OFFSET(0)]
FROM `project.dataset.table` t
GROUP BY ticket_id
结果

Row ticket_id   subject status  date     
1   1           help    closed  2019-08-02   
2   2           problem open    2019-08-04