【问题标题】:cannot access field on a value with type string_google big query无法访问字符串类型为 google bigquery 的值上的字段
【发布时间】:2018-07-19 16:57:55
【问题描述】:

我在谷歌大查询中遇到了一个错误,我没有成功找到解决方案。

我有两个表Airnow_dataset.adjustedTime_met_la_wind_letterAirnow_dataset.station_neighbour,前一个表中wind_direction列的值定义了后一个的列名。

我使用“case”子句来引用另一个表的相应列,但是每当我运行查询时就会出现错误

无法在 [3:83] 处访问字符串类型值的字段 pm_station

我想提一下station_neighbour 中返回的行数是1,所以应该没有问题。此外,当我硬编码s.pm_station value 时,它工作正常。我猜这个问题是由于外部查询中的别名造成的,但我不知道如何解决它。为了您的信息,我附上了我的表格的屏幕截图以及我的代码。

非常感谢任何帮助。

这是我的查询:

SELECT s.pm_station, s.RH, (CASE 
                        WHEN s.wind_direction="W" then (SELECT ss.W FROM 
                       `Airnow_dataset.station_neighbour` ss 
                        WHERE ss.pm_station=s.pm_station ) 
                        ELSE "na" 
                        END) as neighbour_wind_direction
FROM `Airnow_dataset.adjustedTime_met_la_wind_letter` s

这是模式的图像:

【问题讨论】:

    标签: mysql google-bigquery


    【解决方案1】:

    问题在于您的station_neighbour 表有一个名为S 的列,因此adjustedTime_met_la_wind_letter 的外部别名在CASE WHEN 表达式中被遮蔽。要解决该错误,请使用不同的别名,例如:

    SELECT
      wind_letter.pm_station,
      wind_letter.RH,
      (CASE WHEN wind_letter.wind_direction="W" THEN (
           SELECT ss.W FROM 
           `Airnow_dataset.station_neighbour` ss 
           WHERE ss.pm_station=wind_letter.pm_station ) 
       ELSE "na" END) as neighbour_wind_direction
    FROM `Airnow_dataset.adjustedTime_met_la_wind_letter` wind_letter
    

    【讨论】:

      猜你喜欢
      • 2023-02-06
      • 2020-09-21
      • 1970-01-01
      • 1970-01-01
      • 2019-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多