BigQuery:在使用 UNNEST 函数和清理结果数据的方法后,我选择了更多列

Posted

技术标签:

【中文标题】BigQuery:在使用 UNNEST 函数和清理结果数据的方法后,我选择了更多列【英文标题】:BigQuery: The results have much more columns that I have selected after using the UNNEST function & ways to clean the results data 【发布时间】:2019-05-21 16:08:00 【问题描述】:

我使用以下代码从 BigQuery 中查询 Google Analytics(分析)数据。我只选择了几个指标,但从结果来看,它让我一切都以“产品”开头。

#standardSQL
SELECT
  date, prod.productRevenue,
  hits.transaction.transactionId, 
  prod.productQuantity, hits.product, prod.productSKU
FROM `XXX.ga_sessions_*`,
UNNEST(hits) AS hits,
UNNEST(hits.product) AS prod   
WHERE _TABLE_SUFFIX BETWEEN 'XXX' AND 'XXX' AND hits.transaction.transactionId IS NOT NULL

这是因为我使用了 UNNEST 吗?如果是这样,我应该怎么做才能只查询我选择的列?

另外,有没有清理结果数据的好方法?结果数据如下所示:

v2ProductName:"AAA" productQuantity:"1" transactionId:"123"
v2ProductName:"BBB" productQuantity:"1" transactionId:"456"

但我想要的是:

+---------------+-----------------+---------------+
| v2ProductName | productQuantity | transactionId |
+---------------+-----------------+---------------+
| AAA           | 1               | 123           |
| BBB           | 1               | 456           |
+---------------+-----------------+---------------+

在从 BigQuery 导出结果之前,有没有办法像这样格式化结果?如果没有,有什么好的方法吗?

【问题讨论】:

“结果数据看起来像这样” - 它们在哪里看起来像这样?表示取决于上下文 将结果导出为json文件,json文件长这样 好的,所以您希望 JSON 文件看起来像 CSV 文件?您是否尝试将其导出为 CSV? 文件太大,无法导出为 CSV。 BigQuery 给我的唯一选择是 JSON。 AFAIK - CSV 导出的大小没有大小限制 【参考方案1】:

您粘贴的查询似乎没有任何嵌套数据。

您粘贴的 JSON 结果也与查询不匹配。

确保您的结果不包含嵌套/重复数据,并且您将能够导出 CSV。

【讨论】:

以上是关于BigQuery:在使用 UNNEST 函数和清理结果数据的方法后,我选择了更多列的主要内容,如果未能解决你的问题,请参考以下文章

UNNEST(hit.eCommerceAction),谷歌 Bigquery

Google Bigquery 外部加入 UNNEST

BigQuery - 将 unnest 与 array_agg 一起使用

在 BIGQUERY 上使用 UNNEST 左连接

BigQuery:使用 UNNEST 检查数组的内容

如何在 BigQuery SQL 中使用 UNNEST 和 SPLIT 避免重复?