【问题标题】:querying a table with multiple arrays with same name查询具有多个同名数组的表
【发布时间】:2019-06-29 05:30:05
【问题描述】:

我在 BigQuery 中使用标准 SQL 尝试查询包含多个数组的大表。制作表格的人为其中几个数组赋予了相同的名称。例如,有priceitems.price(数组中的数组!)。我试图获取price 内的值,但它告诉我price 在我尝试unnest 时是模棱两可的,我假设是因为items.price

我已经对此进行了一天的研究,但无法找到可以给我任何想法的单一资源。这是我的查询:

SELECT timestamp, user_id, order_id, p.order_amount, i.quantity
FROM `transactions`,
 UNNEST(items) AS i, UNNEST(price) as p

我收到以下错误:Column name price is ambiguous

【问题讨论】:

  • UNNEST(transactions.price)
  • 我昨天试过了——对不起,我忘了提!它也没有用。鉴于您的想法,我还尝试将 SELECT * FROM transactions AS T 作为子查询,然后取消嵌套 T.price,但这也表示 T 内的价格不明确。

标签: sql google-bigquery


【解决方案1】:

但是当我尝试取消嵌套时,它告诉我价格不明确

您需要将其引用为t.price 而不仅仅是price

SELECT timestamp, user_id, order_id, p.order_amount, i.quantity
FROM `transactions` t,
UNNEST(items) AS i, UNNEST(t.price) as p

【讨论】:

  • 有两种不同的价格:price(一个包含多列的数组,我想从中取消嵌套列值)和 items.price(数组中的一个数组,我不关心但我认为导致其他价格数组的歧义)。我确实尝试 UNNEST i.price 只是为了看看它是否会起作用,但它仍然给我价格不明确的错误。
  • 所以您需要的价格不是 items.price?我想相反。请确认。顺便说一句,很难相信使用 i.price 仍然会给您带来歧义错误!你可能在做别的事?选择语句中的额外列,而不是您问题中的列
  • 无论如何-查看更新的答案-所以现在它将从根目录获取价格-而不是从项目中获取。看起来这就是你所需要的
  • 做到了。你太棒了!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 1970-01-01
  • 2013-12-09
相关资源
最近更新 更多