BigQuery 中的循环连接
Loop Concat in BigQuery
我有这样的数据:
Time Route
11:03:01 home
11:03:04 category
11:03:10 product
11:03:21 cart
我想创建这个:
Time Route Journey
11:03:01 home home
11:03:04 category home, category
11:03:10 product home, category, product
11:03:21 cart home, category, product, cart
如何在 BigQuery 中执行此操作?
以下适用于 BigQuery 标准 SQL
#standardSQL
SELECT *, STRING_AGG(route) OVER(ORDER BY time) journey
FROM `project.dataset.table`
您可以使用您问题中的示例数据来测试和使用上面的示例,如下例所示
#standardSQL
WITH `project.dataset.table` AS (
SELECT TIME '11:03:01' time, 'home' route UNION ALL
SELECT '11:03:04', 'category' UNION ALL
SELECT '11:03:10', 'product' UNION ALL
SELECT '11:03:21', 'cart'
)
SELECT *, STRING_AGG(route) OVER(ORDER BY time) journey
FROM `project.dataset.table`
-- ORDER BY time
结果
Row time route journey
1 11:03:01 home home
2 11:03:04 category home,category
3 11:03:10 product home,category,product
4 11:03:21 cart home,category,product,cart
我有这样的数据:
Time Route
11:03:01 home
11:03:04 category
11:03:10 product
11:03:21 cart
我想创建这个:
Time Route Journey
11:03:01 home home
11:03:04 category home, category
11:03:10 product home, category, product
11:03:21 cart home, category, product, cart
如何在 BigQuery 中执行此操作?
以下适用于 BigQuery 标准 SQL
#standardSQL
SELECT *, STRING_AGG(route) OVER(ORDER BY time) journey
FROM `project.dataset.table`
您可以使用您问题中的示例数据来测试和使用上面的示例,如下例所示
#standardSQL
WITH `project.dataset.table` AS (
SELECT TIME '11:03:01' time, 'home' route UNION ALL
SELECT '11:03:04', 'category' UNION ALL
SELECT '11:03:10', 'product' UNION ALL
SELECT '11:03:21', 'cart'
)
SELECT *, STRING_AGG(route) OVER(ORDER BY time) journey
FROM `project.dataset.table`
-- ORDER BY time
结果
Row time route journey
1 11:03:01 home home
2 11:03:04 category home,category
3 11:03:10 product home,category,product
4 11:03:21 cart home,category,product,cart