如何在Biquery中使用两个不同的列中的param.key值“ action”和“ label”创建报表

时间:2018-11-22 05:44:24

标签: google-bigquery

使用下面的查询通过大查询来查询带有字符串值的param.key“操作”并获取报告

选择event_name,param.value.string_value作为action,count(*)作为eventcoun 从<table>, UNNEST(event_params)作为参数 其中event_name ='BotNav'和param.key ='action'按1,2按事件计数desc分组

通过bigquery收到的输出

event_name操作eventount

BotNav主页3575

BotNav应用程序1468

使用下面的查询通过大查询来查询带有字符串值的param.key“标签”并获取报告

选择event_name,param.value.string_value作为action,count(*)作为eventcoun 从<table>, UNNEST(event_params)作为参数 其中event_name ='BotNav'和param.key ='label'按事件计数desc按1,2顺序分组

通过bigquery收到的输出 event_name标签eventount

BotNav单击2341

BotNav提交1234

BotNav单击1234 BotNav提交234

如何在两个不同的列中使用event.param .key“操作”和“标签”创建报告。我需要像这样在Bigquery中出局。请在bigquery的预期输出下面找到

预期产量

event_name操作标签eventount

BotNav主页单击2341

BotNav主页提交1234

BotNav应用程序单击1234

BotNav应用提交234

请帮助在两个不同的列中获取操作和标签字符串值。

1 个答案:

答案 0 :(得分:1)

尝试以下

#standardSQL
select 
  event_name, 
  param1.value.string_value as action,
  param2.value.string_value as label,
  count(1) as eventcount
From `<table>`,
UNNEST(event_params) as param1,
UNNEST(event_params) as param2
where event_name = 'BotNav' 
and param1.key='action' 
and param2.key='label' 
group by 1, 2, 3 
order by eventcount desc   

显然假设每个event_name行的event_params中只有一个“ action”和“ label”键-根据有关示例的计数,该键应该为

另一个选择是

#standardSQL
select 
  event_name, 
  (select value.string_value from UNNEST(event_params) where key='action') as action,
  (select value.string_value from UNNEST(event_params) where key='label') as label,
  count(1) as eventcount
From `<table>`
where event_name = 'BotNav' 
group by 1, 2, 3 
order by eventcount desc 

具有相同的假设