You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在BigQuery中查询Firestore导出的数组对象获取商品销售数量

问题解决方法

1. 修复Firestore导出BigQuery的schema配置

你之前的schema只声明了line_items为数组类型,没有指定数组内的对象结构,所以导出后BigQuery无法识别为对象数组,只会默认解析为字符串类型。请使用如下完整schema配置重新导出数据:

{
  "name": "line_items",
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "price": {"type": "integer"},
      "qyt": {"type": "integer"},
      "name": {"type": "string"}
    }
  }
}

注意:请确认Firestore中数量字段的拼写为qyt,如果是拼写错误实际为qty请同步修改schema中的字段名

2. BigQuery查询语句

场景1:已按照正确schema重新导出,line_items为对象数组类型

使用UNNEST方法打平数组即可提取字段:

SELECT
  item.name,
  item.qyt AS qty
FROM
  `你的项目ID.你的数据集名称.你的表名`,
  UNNEST(line_items) AS item

如果需要统计全量商品的累计售出数量,使用以下语句:

SELECT
  item.name,
  SUM(item.qyt) AS total_sold_qty
FROM
  `你的项目ID.你的数据集名称.你的表名`,
  UNNEST(line_items) AS item
GROUP BY item.name
ORDER BY total_sold_qty DESC

场景2:不想重新导出,直接处理当前存储为字符串的line_items

先通过JSON解析函数把字符串转为数组再打平提取字段:

SELECT
  JSON_VALUE(item, '$.name') AS name,
  CAST(JSON_VALUE(item, '$.qyt') AS INT64) AS qty
FROM
  `你的项目ID.你的数据集名称.你的表名`,
  UNNEST(JSON_EXTRACT_ARRAY(line_items)) AS item

内容的提问来源于stack exchange,提问作者Louna Akkad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:54:04