如何删除 BigQuery 数组中的空值?
Posted
技术标签:
【中文标题】如何删除 BigQuery 数组中的空值?【英文标题】:How to remove null value in array for BigQuery? 【发布时间】:2020-07-21 22:05:49 【问题描述】:我有一个关于 BigQuery 的疑问, 请看下面的例子:
SELECT SPLIT(path, '/')[OFFSET(0)] part1,
SPLIT(path, '/')[OFFSET(1)] part2,
SPLIT(path, '/')[OFFSET(2)] part3,
SPLIT(path, '/')[OFFSET(3)] part4,
ARRAY_LENGTH(SPLIT(path, '/')),
SPLIT(path, '/')
FROM (SELECT "/a/b/" path)
如下所示,结果是这样的。 问题是,如何删除第 1 部分和第 4 部分数据, 并将 f0_ 设为 2 而不是 4?
【问题讨论】:
【参考方案1】:以下是 BigQuery 标准 SQL
#standardSQL
SELECT ARRAY_LENGTH(arr) arr_length, arr
FROM (
SELECT
ARRAY(SELECT * FROM UNNEST(SPLIT(path, '/')) part WHERE part != '') arr
FROM `project.dataset.table`
)
您可以使用来自您问题的示例数据进行测试,如下例所示
#standardSQL
WITH `project.dataset.table` AS (
SELECT "/a/b/" path
)
SELECT ARRAY_LENGTH(arr) arr_length, arr
FROM (
SELECT
ARRAY(SELECT * FROM UNNEST(SPLIT(path, '/')) part WHERE part != '') arr
FROM `project.dataset.table`
)
结果
Row arr_length arr
1 2 a
b
这是我看到的你所期望的壁橱
【讨论】:
您好,谢谢,在这种情况下,如何将 SELECT "/a/b/" 路径替换为 SELECT FROM 查询?谢谢 只需删除 WITH 部分 - 它只是供您测试 - 请参阅我的答案中的更新 SELECT ARRAY_LENGTH(arr) arr_length, arr FROM ( SELECT ARRAY(SELECT * FROM UNNEST(SPLIT(SELECT page_urlpath FROMtest
, '/')) part WHERE part != '') arr FROM project.dataset.table
) page_urlpath 类似于“\customer\path\”...谢谢
如果有帮助,请考虑对答案进行投票。这在 SO 上很重要以上是关于如何删除 BigQuery 数组中的空值?的主要内容,如果未能解决你的问题,请参考以下文章