首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Google BigQuery中取消嵌套三级依赖

在Google BigQuery中取消嵌套三级依赖
EN

Stack Overflow用户
提问于 2019-11-28 00:59:36
回答 2查看 156关注 0票数 0

我正在尝试使用BQ替换现有表中的模式。BQ中的某些字段具有3-5级架构依赖关系。对于Ex.comsalesorders.comSalesOrdersInfo.storetransactionid此字段嵌套在两个字段下。因为我使用它来替换现有的表,所以我不能在查询中更改字段名。该查询如下所示

代码语言:javascript
复制
SELECT * REPLACE(comsalesorders.comSalesOrdersInfo.storetransactionid AS STRING) FROM CentralizedOrders_streaming.orderStatusUpdated, UNNEST(comsalesorders) AS comsalesorders, UNNEST(comsalesorders.comSalesOrdersInfo) AS comsalesorders.comSalesOrdersInfo

BQ允许取消嵌套第一个模式字段,但在第二个嵌套时出现问题。为了将UNNEST()用于此类禁用模式,我需要对此查询进行哪些更改?

EN

回答 2

Stack Overflow用户

发布于 2019-11-28 01:04:24

鉴于您没有模式,我将尝试提供一个通用的答案。请尝试理解这两个查询之间的区别。

代码语言:javascript
复制
-- Provide an alias for each unnest (as if each is a separate table)
select c.stuff
from table
left join unnest(table.first_level_nested) a
left join unnest(a.second_level_nested) b
left join unnest(b.third_level_nested) c

-- b and c won't work here because you are 'double unnesting'
select c.stuff
from table
left join unnest(table.first_level_nested) a
left join unnest(first_level_nested.second_level_nested) b
left join unnest(first_level_nested.second_level_nested.third_level_nested) c
票数 0
EN

Stack Overflow用户

发布于 2019-11-29 00:30:37

我不确定我是否理解了您的问题,但正如我可以猜测的那样,您希望将一种列类型更改为另一种类型,例如字符串。

UNNEST函数仅用于数组类型的列,例如:

"comsalesorders":"comSalesOrdersInfo":{},comSalesOrdersInfo:{},comSalesOrdersInfo:{}

但不是这样的列:

"comSalesOrdersInfo":{"storeTransactionID":"X1056-943462","ItemsWarrenty":0,"currencyCountry":"USD"}

因此,如果a没有误解你的问题,我会这样查询:

代码语言:javascript
复制
SELECT *, CAST(A.comSalesOrdersInfo.storeTransactionID as STRING) 
FROM `TABLE`, UNNEST(comsalesorders) as A
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59075121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档