Bigquery:查找在数组中首次找到指定元素的索引
Bigquery: Find the index at which a specified element is first found within an array
我正在使用 Bigquery,我有一个包含数组的数据集,我想在其中提取首次找到指定元素的索引。我没有在 Bigquery 中找到一个函数来实现我想要的。 Dataprep 具有执行此操作的 arrayindexof
函数,但在撰写本文时它在 Bigquery 中不可用。 https://cloud.google.com/dataprep/docs/html/ARRAYINDEXOF-Function_136155116
如果 arrayindexof
存在于 Bigquery 中,下面是我们如何使用它。
select arrayindexof(metric, 'b') as index, value[offset(arrayindexof(metric, 'b'))] as b
from (select ['a', 'b', 'c'] as metric, [1, 2, 3] as value
union all select ['b', 'c'], [4, 5]
union all select ['c'], [6])
想要的结果:
Row|index| b
--------------
1| 1| 2
2| 0| 4
3| NULL|NULL
知道如何在 Bigquery 中获得预期的结果吗?
亲切的问候,
以下适用于 BigQuery 标准 SQL
#standardSQL
select
( select offset
from unnest(metric) m with offset
where m = 'b'
) index,
( select v
from unnest(metric) m with offset
join unnest(value) v with offset
using(offset)
where m = 'b'
) b
from `project.dataset.table`
如果应用于您问题中的示例数据 - 输出为
另一种选择(显然结果相同):
#standardSQL
select index, value[offset(index)] value
from (
select *,
( select offset
from unnest(metric) m with offset
where m = 'b'
) index
from `project.dataset.table`
)
我正在使用 Bigquery,我有一个包含数组的数据集,我想在其中提取首次找到指定元素的索引。我没有在 Bigquery 中找到一个函数来实现我想要的。 Dataprep 具有执行此操作的 arrayindexof
函数,但在撰写本文时它在 Bigquery 中不可用。 https://cloud.google.com/dataprep/docs/html/ARRAYINDEXOF-Function_136155116
如果 arrayindexof
存在于 Bigquery 中,下面是我们如何使用它。
select arrayindexof(metric, 'b') as index, value[offset(arrayindexof(metric, 'b'))] as b
from (select ['a', 'b', 'c'] as metric, [1, 2, 3] as value
union all select ['b', 'c'], [4, 5]
union all select ['c'], [6])
想要的结果:
Row|index| b
--------------
1| 1| 2
2| 0| 4
3| NULL|NULL
知道如何在 Bigquery 中获得预期的结果吗?
亲切的问候,
以下适用于 BigQuery 标准 SQL
#standardSQL
select
( select offset
from unnest(metric) m with offset
where m = 'b'
) index,
( select v
from unnest(metric) m with offset
join unnest(value) v with offset
using(offset)
where m = 'b'
) b
from `project.dataset.table`
如果应用于您问题中的示例数据 - 输出为
另一种选择(显然结果相同):
#standardSQL
select index, value[offset(index)] value
from (
select *,
( select offset
from unnest(metric) m with offset
where m = 'b'
) index
from `project.dataset.table`
)