给出以下结构。在叶节点下面是field1
,field2
其余是包含叶的对象结构。
dimension1.dimension2.dimension3.field1
dimension1.dimension2.dimension3.field2
dimension1.dimension2.field1
dimension2.dimension2.field2
dimension1.field1
Q1。如何在保持其余结构的同时从dimension1.dimension2.dimension3.field2
和dimension2.dimension2.field2
重命名field2?我找到了替换一级嵌套结构的示例,但无法对嵌套结构执行此操作。
Q2。叶名field1
出现在不同的结构位置。当我尝试执行如下所示的select语句时,出现错误消息,提示不支持重复名称。我不确定下面的重复项如何,因为所有字段的路径都不相同。我该如何解决这个问题?
SELECT dimension1.dimension2.dimension3.field1
dimension1.dimension2.field1
dimension1.field1
答案 0 :(得分:2)
以下示例适用于BigQuery标准SQL
如何在保持结构其余部分的情况下,从Dimension1.dimension2.dimension3.field2和Dimension2.dimension2.field2重命名field2?
#standardSQL
WITH `project.dataset.table` AS (
SELECT
STRUCT<field1 INT64, dimension2 STRUCT<field1 INT64, dimension3 STRUCT<field1 INT64, field2 INT64>>>(1, STRUCT(11, STRUCT(21, 22))) dimension1,
STRUCT<dimension2 STRUCT<field2 INT64>>(STRUCT(31)) dimension2
)
SELECT
STRUCT<field1 INT64, dimension2 STRUCT<field1 INT64, dimension3 STRUCT<field1 INT64, field3 INT64>>>
(dimension1.field1, STRUCT(dimension1.dimension2.field1, STRUCT(dimension1.dimension2.dimension3.field1, dimension1.dimension2.dimension3.field2))
) dimension1,
STRUCT<dimension2 STRUCT<field4 INT64>>(STRUCT(dimension2.dimension2.field2)) dimension2
FROM `project.dataset.table`
您可以使用以下虚拟数据进行测试,操作
SELECT
dimension1.dimension2.dimension3.field1 AS a,
dimension1.dimension2.field1 AS b,
dimension1.field1 AS c
FROM `project.dataset.table`
我收到错误消息,说不支持重复名称。 ...我如何解决这个问题?
只需使用别名,如下面的示例
{{1}}