从“将集合导出到BigQuery” firebase扩展中获取JSON数据为行列格式

时间:2019-11-25 15:14:41

标签: firebase google-cloud-firestore google-bigquery firebase-extensions

我当前正在使用SELECT PS.Name, Z.[Round], AVG(TRY_CAST(Z.[EstimatedValue] AS FLOAT)), AVG(TRY_CAST(Z.[InformationGain] AS FLOAT)) FROM [dbo].[IntermediateScores] Z INNER JOIN [dbo].[PScale] PS ON Z.[ScaleId] = PS.Id GROUP BY PS.Name, Z.[Round] ORDER BY PS.Name,Z.[Round] Firebase Extension。

这是一个Firebase函数,可定期将Firestore集合更新为BigQuery。

这很好,但是似乎将Firestore文档数据放入BigQuery中的“数据”列中。

我的问题是,如何将JSON从数据列中取出到BigQuery中的单独列中。幸运的是,我的JSON / Firestore文档未嵌套且平坦,我打算保持这种状态。

任何建议都会很棒。我知道https://cloud.google.com/bigquery/docs/reference/standard-sql/json_functions,但正在努力寻找合适的SQL查询来实现这一目标。

2 个答案:

答案 0 :(得分:1)

您应该可以使用JSON_EXTRACT_SCALAR对数据进行“列化”。

with data as (select '{ "name" : "Jakob", "age" : "6" }' as my_json)
select 
  JSON_EXTRACT_SCALAR(my_json,'$.name') as name,
  JSON_EXTRACT_SCALAR(my_json,'$.age') as age
from data

考虑将Firebase的“源”数据保持不变,然后创建一个解析json的视图,以提供可用列。

答案 1 :(得分:1)

    SELECT 
      JSON_EXTRACT(data, "$.user") AS user
    FROM `firebase-project.firestore_export.name-of-firestore-collection` 

是我用来从数据列中提取JSON并将其格式化为不同列的功能。

感谢rtenha!