[英]Unrecognised name: when using UNNEST WHERE in BigQuery
I'm trying to filter during an unnest in BigQuery as per this blog , but I can't get the pattern working.我正在尝试根据此博客在 BigQuery 中进行过滤,但我无法使该模式正常工作。
The reproducible example in the blog works really nicely.博客中的可重现示例非常有效。
SELECT event_name, event_timestamp, user_pseudo_id,
event_params
FROM `firebase-public-project.analytics_153293282.events_20181003`
WHERE event_name = "level_complete_quickplay"
SELECT event_name, event_timestamp, user_pseudo_id,
(SELECT value.int_value FROM UNNEST(event_params)
WHERE key = "value") AS score
FROM `firebase-public-project.analytics_153293282.events_20181003`
WHERE event_name = "level_complete_quickplay"
When I try this on my own table I get the error Unrecognised name:
.当我在自己的表上尝试此操作时,我收到错误
Unrecognised name:
。 I've tried to reproduce the error in a toy table, nested_seq
.我试图在玩具表
nested_seq
中重现错误。
WITH sequences AS (
SELECT
[0, 1, 1, 2, 3, 5] AS some_numbers
UNION ALL SELECT [2, 4, 8, 16, 32] AS some_numbers
UNION ALL SELECT [5, 10] AS some_numbers
),
-- table containing repeated record
nested_seq AS (
SELECT
some_numbers,
some_numbers[OFFSET(1)] AS offset_1,
some_numbers[ORDINAL(1)] AS ordinal_1
FROM sequences
)
-- transformation to extract single value from array
SELECT *
FROM nested_seq
LEFT JOIN (SELECT
some_numbers
FROM UNNEST(some_numbers)
WHERE some_numbers = 2)
-- Unrecognized name: some_numbers at [21:19]
What I'm expecting is that elements of some_numbers
can be extracted so that I can unnest a nested array without increasing the number of rows.我期望的是
some_numbers
的元素可以被提取,这样我就可以在不增加行数的情况下取消嵌套数组。
Row![]() |
some_numbers![]() |
offset_1![]() |
ordinal_1 ![]() |
---|---|---|---|
1 ![]() |
2 ![]() |
1 ![]() |
0 ![]() |
2 ![]() |
2 ![]() |
4 ![]() |
2 ![]() |
3 ![]() |
null ![]() |
10 ![]() |
5 ![]() |
... elements of some_numbers can be extracted so that I can unnest a nested array without increasing the number of rows.
... some_numbers 的元素可以被提取,这样我就可以在不增加行数的情况下取消嵌套数组。
Consider below "fix"考虑下面的“修复”
WITH sequences AS (
SELECT
[0, 1, 1, 2, 3, 5] AS some_numbers
UNION ALL SELECT [2, 4, 8, 16, 32] AS some_numbers
UNION ALL SELECT [5, 10] AS some_numbers
)
SELECT # some_numbers,
(SELECT some_number
FROM t.some_numbers some_number
WHERE some_number = 2
) some_number,
some_numbers[OFFSET(1)] AS offset_1,
some_numbers[ORDINAL(1)] AS ordinal_1
FROM sequences t
with output与 output
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.