如何解决BigQuery阵列的最后一行
我正在尝试在BigQuery中标记数组的最后一行。我可以选择最后一行,但是我不知道如何创建一个新字段,对最后一行说“ True”,对所有其他行说“ False”。
这是我到目前为止所拥有的,它为我提供了字段的最后一个值,但是将其写回到了数组中的所有行上,这不是我想要的。
SELECT
ARRAY(
SELECT
AS STRUCT page_views[SAFE_OFFSET(ARRAY_LENGTH(page_views) -1)].page_view_id AS exit
FROM
UNNEST(page_views)) page_views
FROM
`project.dataset.sessions`
输出:
我试图添加一个case语句来将page_view_id与exit进行比较,但是我无法使该案例与struct和array一起使用。
预期输出:
解决方法
以下内容适用于BigQuery标准SQL:
SELECT * REPLACE(
ARRAY(
SELECT AS STRUCT e.*,OFFSET = ARRAY_LENGTH(page_view) - 1 AS exit
FROM UNNEST(page_view) e WITH OFFSET
) AS page_view
)
FROM `project.dataset.sessions`
上面的查询将所有字段保留在原处,仅将exit
字段添加到page_view
数组中。
对于问题中的样本数据,结果将为:
Row id page_view.page_view_id page_view.exit
1 1 1 false
2 true
2 2 3 false
4 false
5 true
3 3 6 true
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。