Google analytics 无法访问类型为ARRAY的值上的字段productQuantity<;结构<;productSKU字符串、v2ProductName字符串、v2ProductCategory字符串,…>&燃气轮机;

Google analytics 无法访问类型为ARRAY的值上的字段productQuantity<;结构<;productSKU字符串、v2ProductName字符串、v2ProductCategory字符串,…>&燃气轮机;,google-analytics,google-bigquery,bigquery-standard-sql,Google Analytics,Google Bigquery,Bigquery Standard Sql,我正在尝试使用BigQuery从Google Analytics查询数据。在我运行它之前,它会给我这个错误: 无法访问数组类型的值上的字段productQuantity 我在谷歌上搜索了一下,我已经在使用UNNEST功能,正如其他一些答案中所建议的那样。我不知道怎么了 我还在谷歌分析的不同表格中查询数据,数据按日期存储。有没有一种方法可以在不重复代码的情况下从特定时间段进行查询 请参阅下面我的代码: #standardSQL SELECT date, hits.transaction.t

我正在尝试使用BigQuery从Google Analytics查询数据。在我运行它之前,它会给我这个错误:

无法访问数组类型的值上的字段productQuantity

我在谷歌上搜索了一下,我已经在使用
UNNEST
功能,正如其他一些答案中所建议的那样。我不知道怎么了

我还在谷歌分析的不同表格中查询数据,数据按日期存储。有没有一种方法可以在不重复代码的情况下从特定时间段进行查询

请参阅下面我的代码:

#standardSQL
SELECT
  date,
  hits.transaction.transactionId,
  hits.product.productQuantity
FROM
  `XXX1`,
  UNNEST(hits) AS hits,
  UNNEST(hits.product.productQuantity) AS prod
GROUP BY
  date
UNION ALL
SELECT
  date,
  hits.transaction.transactionId,
  hits.product.productQuantity
FROM
  `XXX2` UNNEST(hits) AS hits,
  UNNEST(hits.product.productQuantity) AS prod
GROUP BY
  date
UNION ALL
SELECT
  date,
  hits.transaction.transactionId,
  hits.product.productQuantity
FROM
  `XXX3` UNNEST(hits) AS hits,
  UNNEST(hits.product.productQuantity) AS prod
GROUP BY
  date
UNION ALL
SELECT
  date,
  hits.transaction.transactionId,
  hits.product.productQuantity
FROM
  `XXX4` UNNEST(hits) AS hits,
  UNNEST(hits.product.productQuantity) AS prod
GROUP BY
  date
UNION ALL
SELECT
  date,
  hits.transaction.transactionId,
  hits.product.productQuantity
FROM
  `XXX5` UNNEST(hits) AS hits,
  UNNEST(hits.product.productQuantity) AS prod
GROUP BY
  date
UNION ALL
SELECT
  date,
  hits.transaction.transactionId,
  hits.product.productQuantity
FROM
  `XXX6` UNNEST(hits) AS hits,
  UNNEST(hits.product.productQuantity) AS prod
GROUP BY
  date
无法访问类型为ARRAY>

你应该使用下面的方法

#standardSQL
SELECT
  date,
  hits.transaction.transactionId, 
  prod.productQuantity
FROM `XXX`,
UNNEST(hits) AS hits,
UNNEST(hits.product) AS prod
因此,如您所见,
productQuantity
是使用未列出的“prod”访问的

注意:当您使用GROUP BY时,您需要对select语句中不属于GROUP BY的文件使用聚合函数-在您的示例中,下面有两个字段需要应用于您正在寻找的任何聚合,以防您仍然需要GROUP BY

hits.transaction.transactionId, 
prod.productQuantity   
有没有一种方法可以在不重复代码的情况下从特定时间段进行查询

是的,你可以用这个

就像下面的例子

#standardSQL
SELECT
  date,
  hits.transaction.transactionId, 
  prod.productQuantity
FROM `project.dataset.XXX*`,
UNNEST(hits) AS hits,
UNNEST(hits.product) AS prod   
WHERE _TABLE_SUFFIX BETWEEN '1' AND '6'

非常感谢你!但是我导出的文件包含了更多我选择的列(使用与您建议的相同的代码)。它基本上拥有产品的一切。是因为我使用了UNNEST吗?如果我只想知道日期、交易ID和产品数量,我该怎么办?我已经回答了你最初的问题。如果你有新问题-请发布新问题!同时,如果有助于解决你原来的问题,请考虑接受答案。