簡體   English   中英

不同的結果 UNNEST BigQuery

[英]Different results UNNEST BigQuery

我不明白這些查詢之間的區別是什么:

SELECT event_timestamp ,user_pseudo_id, value.double_value as tax
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`, UNNEST(event_params) as event_params
WHERE event_name = "purchase" and event_params.key = "tax" 

另一個查詢是:

SELECT event_timestamp ,user_pseudo_id, 
(SELECT value.double_value FROM UNNEST(event_params) WHERE key = "tax") as tax
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*` 
WHERE event_name = "purchase"

在第一個查詢中,我得到 5.242 個寄存器,在第二個查詢中得到 5.692 個。 錯誤是什么?

謝謝!

這取決於您將什么定義為准確。 行數不匹配的原因是處理稅字段的方式。 您可以通過運行以下查詢來查看差異:

with unnested as (
    SELECT event_timestamp ,user_pseudo_id, value.double_value as tax
    FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`, UNNEST(event_params) as event_params
    WHERE event_name = "purchase" and event_params.key = "tax"
 ) 
SELECT events.event_timestamp ,events.user_pseudo_id, 
(SELECT value.double_value FROM UNNEST(event_params) WHERE key = "tax") as tax
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*` events
LEFT JOIN unnested un
 on events.event_timestamp=un.event_timestamp
 and events.user_pseudo_id=un.user_pseudo_id
WHERE events.event_name = "purchase"
and un.event_timestamp is null
;

如果您從該列表中挑選出一條記錄並使用以下兩個查詢進行調查:

    SELECT *
    FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`, UNNEST(event_params) as event_params
    WHERE 1=1
    -- and event_name = "purchase" and event_params.key = "tax"
    and event_name = "purchase" and event_timestamp=1608955242902332 and user_pseudo_id='43627350.3807676886';


    SELECT 
    *,
    (SELECT value.double_value FROM UNNEST(event_params) WHERE key = "tax") as tax
    FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*` events
    WHERE events.event_name = "purchase"
    and event_timestamp=1608955242902332 and user_pseudo_id='43627350.3807676886'
    ;

第一個查詢從最終集中過濾掉沒有稅字段的記錄,而第二個查詢返回具有 null 稅值的記錄。 如果注冊的號碼取決於稅字段中值的存在,則 5242 值是正確的號碼。

暫無
暫無

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

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