簡體   English   中英

無法識別的名稱:在 BigQuery 中使用 UNNEST WHERE 時

[英]Unrecognised name: when using UNNEST WHERE in BigQuery

我正在嘗試根據此博客在 BigQuery 中進行過濾,但我無法使該模式正常工作。

博客中的可重現示例非常有效。

SELECT event_name, event_timestamp, user_pseudo_id, 
  event_params
FROM `firebase-public-project.analytics_153293282.events_20181003`
WHERE event_name = "level_complete_quickplay"

顯示數組 event_params 的 BigQuery 控制台

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"

BigQuery 控制台顯示 event_params 的未嵌套和過濾組件

當我在自己的表上嘗試此操作時,我收到錯誤Unrecognised name: 我試圖在玩具表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] 

我期望的是some_numbers的元素可以被提取,這樣我就可以在不增加行數的情況下取消嵌套數組。

一些數字 偏移量_1 ordinal_1
1 2 1 0
2 2 4 2
3 null 10 5

... some_numbers 的元素可以被提取,這樣我就可以在不增加行數的情況下取消嵌套數組。

考慮下面的“修復”

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

與 output

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM