Google bigquery 大查询轴和聚合重复字段

Google bigquery 大查询轴和聚合重复字段,google-bigquery,Google Bigquery,我希望将字段“unitId”、“firebase\u screen\u class”作为轴心,以便每个字段都显示在单独的列中: SELECT event.name, event_param.value.string_value AS ad_unit, COUNT(*) AS event_count FROM `app_events_20170510`, UNNEST(event_dim) AS event, UNNEST(event.params) as event_

我希望将字段“unitId”、“firebase\u screen\u class”作为轴心,以便每个字段都显示在单独的列中:

SELECT
  event.name,
  event_param.value.string_value AS ad_unit,
  COUNT(*) AS event_count
FROM
  `app_events_20170510`, 
  UNNEST(event_dim) AS event, 
  UNNEST(event.params) as event_param
WHERE
  event.name in ('Ad_requested', 'Ad_clicked', 'Ad_shown')
  and event_param.key in ('unitId', 'screen_class')
GROUP BY 1,2
我使用旧SQL使用了以下查询,但未显示正确的聚合结果:

SELECT event_name, ad_unit, count(*) FROM
(
SELECT
  event_dim.name as event_name,
  MAX(IF(event_dim.params.key = "firebase_screen_class", event_dim.params.value.string_value, NULL)) WITHIN RECORD as firebase_screen_class,
  MAX(IF(event_dim.params.key = "unitId", event_dim.params.value.string_value, NULL)) WITHIN RECORD as ad_unit
FROM
  [app_events_20170510]
WHERE
  event_dim.name in ('Ad_requested','Ad_shown', 'Ad_clicked')
  and event_dim.params.key in ('unitId','screen_class')
)
group by 1,2
我正在寻找以下输出:

_________________________________________________________________________
| event_dim.name   | unitId         | screen_class         | count_events|
|__________________|________________|______________________|_____________|
| Ad_requested     | hpg            | socialFeed           |    520      |
|__________________|________________|______________________|_____________|
| Ad_shown         | hpg            | chat                 |    950      |
|__________________|________________|______________________|_____________|
| Ad_requested     | hni            | chat                 |    740      |
|__________________|________________|______________________|_____________|

所有请求的、显示的和单击的事件的参数都具有相同的KeyUnitID、screen类别以及每个KeyUnitID的相同值:hpg、hni/screen类别:socialFeed、chat

下面是BigQuery标准SQL

标准SQL 以'aggregation'作为 选择 event.name, 事件参数键, 计数*作为事件计数 从…起 `应用程序\u事件\u 20170510`, 不尊重事件作为事件, UNNESTevent.params作为事件参数 哪里 “请求广告”、“点击广告”、“显示广告”中的event.name 在“unitId”、“firebase\u screen\u class”和“house”中输入事件参数 分组1,2 选择 名称 MAXIFkey='unitId',事件计数,NULL为unitId, MAXIFkey='firebase\u screen\u class',事件计数,作为firebase\u screen\u class为空, MAXIFkey='house',事件计数,空为house 从`聚合` 按名称分组 根据评论中的澄清进行更新:

标准SQL 选择 event.name, 从UNNESTevent.params中选择value.string_value,其中key='unitId'作为unitId, 从UNNESTevent.params中选择value.string\u value,其中key='firebase\u screen\u class'作为firebase\u screen\u class, 从UNNESTevent.params中选择value.string_value,其中key='house'作为house, COUNT1作为事件计数 从'app\u events\u 20170510',unestevent\u dim AS event 其中event.name位于“请求广告”、“点击广告”、“显示广告”中 按1,2,3,4分组 。。。出于好奇,我尝试使用遗留SQL复制查询…-

为BigQueQuestSQL的添加版本,纯粹是为了学习目的,并希望帮助那些考虑迁移到标准SQL的两个版本的相同任务现在在这里提交:

legacySQL 选择名称、产品标识、来源、firebase事件来源、计数1作为事件计数 从…起 选择事件\ dim.name作为名称, MAXIFevent_dim.params.key='unitId',event_dim.params.value.string_value,记录内为NULL,为unitId, MAXIFevent_dim.params.key='firebase_screen_class',event_dim.params.value.string_value,记录中为NULL,作为firebase_screen_class, MAXIFevent_dim.params.key='house',event_dim.params.value.string_value,记录中为空,作为house, 从扁平化[项目:dataset.app\u events\u 20170510],事件作为事件 “请求广告”、“点击广告”、“显示广告”中的事件名称 按1,2,3,4分组
下面是BigQuery标准SQL

标准SQL 以'aggregation'作为 选择 event.name, 事件参数键, 计数*作为事件计数 从…起 `应用程序\u事件\u 20170510`, 不尊重事件作为事件, UNNESTevent.params作为事件参数 哪里 “请求广告”、“点击广告”、“显示广告”中的event.name 在“unitId”、“firebase\u screen\u class”和“house”中输入事件参数 分组1,2 选择 名称 MAXIFkey='unitId',事件计数,NULL为unitId, MAXIFkey='firebase\u screen\u class',事件计数,作为firebase\u screen\u class为空, MAXIFkey='house',事件计数,空为house 从`聚合` 按名称分组 根据评论中的澄清进行更新:

标准SQL 选择 event.name, 从UNNESTevent.params中选择value.string_value,其中key='unitId'作为unitId, 从UNNESTevent.params中选择value.string\u value,其中key='firebase\u screen\u class'作为firebase\u screen\u class, 从UNNESTevent.params中选择value.string_value,其中key='house'作为house, COUNT1作为事件计数 从'app\u events\u 20170510',unestevent\u dim AS event 其中event.name位于“请求广告”、“点击广告”、“显示广告”中 按1,2,3,4分组 。。。出于好奇,我尝试使用遗留SQL复制查询…-

为BigQueQuestSQL的添加版本,纯粹是为了学习目的,并希望帮助那些考虑迁移到标准SQL的两个版本的相同任务现在在这里提交:

legacySQL 选择名称、产品标识、来源、firebase事件来源、计数1作为事件计数 从…起 选择事件\ dim.name作为名称, MAXIFevent_dim.params.key='unitId',event_dim.params.value.string_value,记录内为NULL,为unitId, MAXIFevent_dim.params.key='firebase_screen_class',event_dim.params.value.string_value,记录中为NULL,作为firebase_screen_class, MAXIFevent_dim.params.key='house',event_dim.params.value.string_value,记录中为空,作为house, 从扁平化[项目:dataset.app\u events\u 20170510],事件作为事件 “请求广告”、“点击广告”、“显示广告”中的事件名称 按1,2,3,4分组
例如:谢谢你的回答。我运行了查询,但这不是我想要实现的。我正在寻找:事件名称| unitId.values | house.values | firebase |屏幕| class.values | count | event我现在明白你的意思了是的,对不起。我一不小心