我正在尝试根据另一列中一次出现的值来填充一列。
为了说明这一点,这是Google Analytics(分析)数据集的摘要:
UID event_name params.key params.value.string_value
------------------------------------------------------------------------------
abc first_open firebase_event_origin auto
abc user_engagement firebase_screen Login Screen
abc view_item item_id Grade 2
xyz user_engagement firebase_screen Profile Screen
xyz view_item item_id Grade 11
我想添加一个“成绩”列,如下所示:
UID event_name params.key params.value.string_value Grade
------------------------------------------------------------------------------------------
abc first_open firebase_event_origin auto Grade 2
abc user_engagement firebase_screen Login Screen Grade 2
abc view_item item_id Grade 2 Grade 2
xyz user_engagement firebase_screen Profile Screen Grade 11
xyz view_item item_id Grade 11 Grade 11
我尝试过
SELECT UID, params.value.string_value AS Grade
FROM `Google_Analytics`
WHERE params.key="item_id"
,然后将结果数据集与Google_Analytics
数据集合并。但是我想知道是否有办法在原始数据集Google_Analytics
中执行此操作而不必创建新数据集->与原始数据集联接。
非常感谢您!
答案 0 :(得分:1)
您可以使用窗口功能:
select ga.*,
max(case when params.key = 'item_id' then params.value.string_value end) over (partition by uid) as grade
from `Google_Analytics` ga;
我不确定您是否也希望view_item
处于这种状态。