Google bigquery 删除Firebase Analytics导出到不太常用值的BigQuery中的行

Google bigquery 删除Firebase Analytics导出到不太常用值的BigQuery中的行,google-bigquery,firebase-analytics,Google Bigquery,Firebase Analytics,在与第三方共享BigQuery中的Firebase Analytics表之前,我需要删除显示在少于5行中的城市的行。如何在不丢失表结构的情况下执行此操作 挑战: BigQuery中的Firebase Analytics数据具有嵌套行,我不想丢失嵌套结构。 不同地区的一些城市名称相同。这意味着在计算时,我需要使用至少两个字段“城市、地区”。 有时城市和/或地区可以为空。我不想失去那些排。 快速查询: SELECT *, IFNULL(user_dim.geo_info.city,'_')+IF

在与第三方共享BigQuery中的Firebase Analytics表之前,我需要删除显示在少于5行中的城市的行。如何在不丢失表结构的情况下执行此操作

挑战:

BigQuery中的Firebase Analytics数据具有嵌套行,我不想丢失嵌套结构。 不同地区的一些城市名称相同。这意味着在计算时,我需要使用至少两个字段“城市、地区”。 有时城市和/或地区可以为空。我不想失去那些排。 快速查询:

SELECT *,
  IFNULL(user_dim.geo_info.city,'_')+IFNULL(user_dim.geo_info.region,'_') cityregion, 
FROM [dataset.app_events_20160607]
HAVING cityregion NOT IN (
  SELECT cityregion FROM (
    SELECT COUNT(*) c, IFNULL(user_dim.geo_info.city,'_')+IFNULL(user_dim.geo_info.region,'_') cityregion
    FROM [dataset.app_events_20160607]
    GROUP BY 2
    HAVING c<6
  )
)
您必须将选项设置为:

允许大的结果 不使结果扁平化 快速解释:

选择*,[…]cityregion将在不丢失结构和添加新列cityregion的情况下引入所有结果。 如果null…,“'将null值替换为_`,因此我们可以在其中一个值为null的情况下将城市和地区组合在一起。 让cityregion不在中查看新的cityregion列,以检查它是否不存在于子查询中。 子查询统计城市区域的每个组合,仅列出出现次数少于6次的组合。
有时,在公共数据中有多余的列是负担不起的 还没有测试,但下面应该可以做到这一点-您只需要在中运行它

SELECT *
FROM `dataset.app_events_20160607`
WHERE CONCAT(IFNULL(user_dim.geo_info.city,'_'), IFNULL(user_dim.geo_info.region,'_')) NOT IN (
  SELECT cityregion FROM (
    SELECT COUNT(*) c, CONCAT(IFNULL(user_dim.geo_info.city,'_'), IFNULL(user_dim.geo_info.region,'_')) cityregion
    FROM `dataset.app_events_20160607`
    GROUP BY 2
    HAVING c<6
  )
)