BigQuery错误:无法在重复的字段hits.product.sku上进行分区

时间:2016-11-03 01:52:48

标签: sql google-bigquery

我有以下查询:

SELECT
  a.fv fv,
  a.v v,
  a.sku asku
  b.sku bsku from(
  SELECT
    fv,
    v,
    sku from( FLATTEN((
        SELECT
          fullvisitorid fv,
          visitid v,
          hits.product.productsku sku,
          hits.product.isclick click
        FROM (TABLE_DATE_RANGE([dataset_id], DATE_ADD(CURRENT_DATE(), -5, 'day'), DATE_ADD(CURRENT_DATE(), -0, 'day'))),
          (TABLE_DATE_RANGE([dataset_id_intraday_], DATE_ADD(CURRENT_DATE(), -2, 'day'), DATE_ADD(CURRENT_DATE(), 0, 'day')))), hits.product))
  WHERE
    1 = 1
    AND click IS NOT NULL
  GROUP EACH BY
    fv,
    v,
    sku ) a
LEFT JOIN EACH (
  SELECT
    fv,
    v,
    sku from( FLATTEN((
        SELECT
          fullvisitorid fv,
          visitid v,
          hits.product.productsku sku,
          hits.ecommerceaction.action_type act
        FROM (TABLE_DATE_RANGE([dataset_id], DATE_ADD(CURRENT_DATE(), -5, 'day'), DATE_ADD(CURRENT_DATE(), -0, 'day'))),
          (TABLE_DATE_RANGE([dataset_id._intraday_], DATE_ADD(CURRENT_DATE(), -2, 'day'), DATE_ADD(CURRENT_DATE(), 0, 'day')))), hits.product))
  WHERE
    1 = 1
    AND act = '6' ) b
ON
  a.fv = b.fv
  AND a.v = b.v
  AND a.sku = b.sku

此查询只是我们在此处遇到的问题的一个示例。如果我们尝试运行它,我们会收到错误:

Error: Cannot partition on repeated field hits.product.sku

但我们无法弄清楚出了什么问题。

基本上有两组:a是我们带来skus的组,如果他们有任何点击。 小组b我们只是观察到给定的sku是否被购买。

然后我们left join匹配fullvisitors,他们的session id和每个sku

但即使我们尝试应用FLATTEN函数,我们仍然会收到相同的错误消息。

我们知道我们做错了什么但到目前为止还没找到它。

查询中是否有错误?

提前致谢,

1 个答案:

答案 0 :(得分:0)

请检查大多数内部SELECTs 我觉得这可能是“拼写错误”字段名称的问题。

我只是尝试了你的整个查询,它对我有用 - 当我改变时 hits.product.skuhits.item.productsku