如何在 BigQuery 中从 firestore 导出的数组中查找元素

Posted

技术标签:

【中文标题】如何在 BigQuery 中从 firestore 导出的数组中查找元素【英文标题】:how to find elements in an array exported from firestore in BigQuery 【发布时间】:2022-01-04 05:58:33 【问题描述】:

我需要了解已售出的商品数量,因此我将我的 Firestore 数据导出到大查询 我在firestore中有集合,我有对象数组

我需要将森林数据导出到大查询

line_items
[
  
    price:10,
    qyt:2,
   name:car
   ,
  
   price:4,
   qyt:1,
   name:pen
  ,
 ]

我已经创建了 schema.json 并将类型添加为数组并导出集合数据


  
    "name": "line_items",
    "type": "array"
    

现在我正在尝试在 cloud.google 中编写查询以获取此结果


name |qty
car  | 2
pen  | 1

我的问题是我无法将我的对象数组转换为列,因此我可以获得已售出的商品数量

这就是数据在大查询中的样子,它没有显示为对象数组

【问题讨论】:

您可能没有取消嵌套数据。但它看起来像你的架构是错误的。您能否分享您遇到的错误以及出现在 bigquery 中的架构照片? 这是我的架构,我已将 line_items 定义为数组。 pasteboard.co/0jZLFeL8aqzU.png 错误是在 [2:19] 无法访问类型为 ARRAY 的值上的字段条形码我认为我正在获取字符串数组,这就是为什么我无法取消设置检查:photobox.co.uk/my/photo/full?photo_id=504281597889 不幸的是我能看到那个图像。您可能已经阅读过此cloud.google.com/bigquery/docs/…,如果没有,可能值得快速阅读。如果从 Firestore 导入,则不必创建架构。 firestore 中的 map 是 bigquery 中的 record 类型,因此您的架构不正确。 【参考方案1】:

在获取元素之前你必须UNNEST 一个数组

SELECT name, qty FROM your_dataset.your_table, UNNEST(line_items)

【讨论】:

这不起作用。无法识别的名称:数量 [2:8] line_items 是以 json 形式出现的,但我在创建视图时已将其定义为数组

以上是关于如何在 BigQuery 中从 firestore 导出的数组中查找元素的主要内容,如果未能解决你的问题,请参考以下文章

Firestore如何在回收站视图中从firestore检索数据

如何在 Swift 中从 Cloud FireStore Firebase 访问特定字段

如何在 Flutter 中从 Firestore 订购数据,orderBy 订购不正确

如何在 PyCharm 的 pandas 数据框中从 BigQuery 读取数据

如何将集合和子集合一起从 firestore 导出到 excel 或 bigquery 表?

在 Dataflow 中从 BigQuery 写入云存储时如何设置文件大小而不是分片数