访问“f0_”字段

Posted

技术标签:

【中文标题】访问“f0_”字段【英文标题】:Accessing an 'f0_' field 【发布时间】:2020-07-30 16:33:42 【问题描述】:

我使用 BigQuery 中的以下 SQL 代码创建了一个公用表表达式,其中包含一个范围内的日期列表:

WITH    calendar AS(
        SELECT * FROM UNNEST(GENERATE_DATE_ARRAY('2020-01-01', CURRENT_DATE(), INTERVAL 1 DAY))
        )

如果我将其作为不带“WITH”子句的查询运行,该查询将返回一个名为“f0_”的列(您应该能够自己重现此结果)。

现在,我遇到的问题是,当我尝试在单独的 SELECT 语句中访问该列时,无法识别名称“f0_”。 ("无法识别的名字:f0_")

WITH    calendar AS(
        SELECT * FROM UNNEST(GENERATE_DATE_ARRAY('2020-01-01', CURRENT_DATE(), INTERVAL 1 DAY))
        )

SELECT  f0_
FROM    calendar

当然,该查询本身是没有意义的,因为我可以只运行没有 WITH 子句的第一个 SELECT 语句而不需要第二个 SELECT 语句。我明白了。我追求的最终结果有点复杂,上面的逻辑应该足以解释我遇到的问题。基本上,如果该公用表表达式中的 SELECT 语句在我作为独立查询运行时返回一个名为“f0_”的列,为什么我的第二个 SELECT 语句在引用一个似乎应该返回的公用表表达式时返回错误名为“f0_”的列。

我认为它类似于 'f0_' 不是真实名称 - 它只是在没有任何指定名称的情况下分配的东西,或者当您将其作为公共表表达式运行时命名可能会有所不同而不是一个简单的 SELECT 语句。有没有办法可以在我的公用表表达式中为未嵌套的日期数组加上别名,以便我可以在查询的第二部分中访问它?还是其他解决方案?

【问题讨论】:

【参考方案1】:

只需使用别名:

WITH calendar AS(
    SELECT * 
    FROM UNNEST(GENERATE_DATE_ARRAY('2020-01-01', CURRENT_DATE(), INTERVAL 1 DAY)) as dt
)
SELECT dt
FROM  calendar

【讨论】:

这是我尝试的第一件事。原来我的括号放错了地方。现在工作;谢谢

以上是关于访问“f0_”字段的主要内容,如果未能解决你的问题,请参考以下文章

可访问性不一致:字段类型“世界”比字段“frmSplashScreen”更难访问

Java反射----访问字段(Field)

追溯填充访问表单字段

更改当前字段时在访问中设置另一个字段

如何使用字段名称的变量访问命名元组的字段?

Java反射 - 访问字段的字段