BigQuery:无法读取DATETIME类型的TIMESTAMP_MICROS的字段'stamp'

Jor*_*eno 4 google-bigquery

我正在使用BigQuery的标准SQL 通配符表功能。

我有一个具有以下架构的表:

_PARTITIONTIME  TIMESTAMP   NULLABLE
stamp           TIMESTAMP   NULLABLE
value           FLOAT       NULLABLE
source          STRING      NULLABLE
...
Run Code Online (Sandbox Code Playgroud)

因为在我的数据集的表有混合模式,他们的名字是不常用前缀,我打算使广泛的通配符匹配-那么,缩小_TABLE_SUFFIXWHERE

_PARTITIONTIME  TIMESTAMP   NULLABLE
stamp           TIMESTAMP   NULLABLE
value           FLOAT       NULLABLE
source          STRING      NULLABLE
...
Run Code Online (Sandbox Code Playgroud)

这是我能做到的基本知识。cars只匹配一个表。我打算在上面的REGEX中添加其他表。例如:cars|trucks|...

当我执行上述查询时,出现以下错误:

Cannot read field 'stamp' of type TIMESTAMP_MICROS as DATETIME

此外,当我试图删除stamp从我的SELECT,并使用source它的地方列:

SELECT
*,
_TABLE_SUFFIX AS table_name
FROM `my-project.my-dataset.*`
WHERE REGEXP_CONTAINS(_TABLE_SUFFIX, r"cars")
Run Code Online (Sandbox Code Playgroud)

BigQuery现在告诉我: Unrecognized name: source at [2:1]

这两种情况都在发生什么?BigQuery为什么要强制转换我的stamp列,为什么找不到source

Mik*_*ant 6

这两种情况都在发生什么?BigQuery为什么要转换我的标记列,为什么找不到源?

为了执行使用通配符表的标准SQL查询,BigQuery会自动推断该表的架构。BigQuery使用与通配符匹配的最新创建表的模式作为通配符表的模式。如果在与通配符表匹配的表之间架构不一致,则BigQuery返回错误。

这说明了您看到的两种情况!

在第一种情况下-最新的表具有_PARTITIONTIME作为DATETIME数据类型
在第二种情况下-同一最新的表只是其中没有source字段