我有一個用戶事件表,我想用一些謂詞將這些事件投影到一個 新列中,然後將每個用戶 的事件聚合到一個新的投影中,告訴我用戶是否曾經謂詞匹配 他們,或者他們從來沒有與之相匹配等如何計算BigQuery中某列上的布爾聚合?
在其他語言中,這通常被稱爲all()
和any()
,在那裏你傳遞 它的布爾值的列表,如果所有它會告訴你的匹配,或者如果在 至少有一個匹配。相當於在所有布爾值 值(如all
的情況下)上使用布爾值AND
,或在所有布爾值 值(如any
中)上使用布爾值OR
。
BigQuery是否具有此功能?我可以使用max
和 min
來近似它,但它並不理想。
例子:
select
month(date_time) m,
count(*) as ct,
max(id_is_present),
min(id_is_present),
max(starts_with_one) max_one,
min(starts_with_one) min_one,
from
(
select
length(user_id) > 1 id_is_present,
regexp_match(user_id, r'^1') starts_with_one,
date_time
from
[user_events.2015_02]
)
group by
m
它利用的max(true, false, false)
行爲產生true
,所以你可以排序的通過爲值的列搜索,然後從那裏建立實施any
和all
。
這是我不得不依賴的破解或者BigQuery是否支持布爾聚合?