【问题标题】:Bigquery request data from 2 arrays来自 2 个数组的 Bigquery 请求数据
【发布时间】:2018-04-04 00:06:49
【问题描述】:

我正在使用以下 BigQuery 导出数据方案 https://support.google.com/analytics/answer/3437719?hl=en&ref_topic=3416089

并且想要在普通 SQL 上从自定义维度(数组字段)中导出带有额外 2 个字段的命中数据,它会是这样的:

select visitId,visitStartTime,customDimensions.value, hits.SOME_HIT_INFO, hits.customDimensions.value from session_data left join hits left join customDimensions where customDimensions.index=100 left join hits.customDimensions where hits.customDimensions.index=200

BigQuery 查询语法的外观如何?

更新:

例如我有以下数据:

{
'visitId' : 1
'visitStartTime' : ...,
....
'hits' : [
  {
    'refferer: 'REF1'
    ....
    'customDimensions' : [
       {'index':200,'value':'HITVALUE200'},
       {'index':202,'value':'HITVALUE202'},
    ]
  }
],
'customDimensions' : [
   {'index':100,'value':'VALUE100'},
   {'index':102,'value':'VALUE102'},
]
}

我想收到这样的东西:

+-------------------------------------------------- ------------+ |访问ID | hits.refferer | hits_cd_INDEX_201 | cd_INDEX_101 | +-------------------------------------------------- ------------+ | 1 | REF1 | HITVALUE201 | HITVALUE101 | +-------------------------------------------------- ------------+

```

【问题讨论】:

  • 不清楚你到底需要什么!请提供更多信息。像预期的结果一样?
  • 这背后的逻辑是什么?顺便提一句。您的预期输出与您提供的示例不匹配!
  • @MikhailBerlyant:我想根据索引从数组字段中提取 2 个特殊值(基于索引)。一般的 bigquery 语法不允许,所以我写了这个伪 SQL 请求。
  • 我明白了 - 只是想仔细检查一下 - hits 字段是一个数组 - 所以对于同一个 visitId 你可能会得到多个引用者和各自的命中值 - 对吗?
  • 完全有意义 - 现在输入答案 :o)

标签: google-bigquery


【解决方案1】:

以下是 BigQuery 标准 SQL

#standardSQL
SELECT visitId,   
  ARRAY(
    SELECT AS STRUCT refferer, 
      (SELECT value FROM UNNEST(hit.customDimensions) dim WHERE index = 200) cd_index_200 
    FROM UNNEST(hits) hit
    ) hits,
  (SELECT value FROM UNNEST(customDimensions) dim WHERE index = 100) cd_index_100
FROM `project.dataset.session_data`

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 2017-12-23
    • 1970-01-01
    相关资源
    最近更新 更多