BigQuery Bug?影响名称间距的反勾号



所以我在BigQuery上有一个表,`our project-name.ads.Geo`,其中包含一个Geo.CountryCode列。

使用"我们的项目名称"时,使用SELECTGeo.CountryCode失败`广告``Geo,因为列和表之间存在命名冲突,但在使用"我们的项目名称.ads.Geo"时不会出现此问题。这些名称在语义上不等效吗?

谢谢!

是的,关于BigQuery生成的隐式别名,这里有一个小的语义差异。

当执行FROM `proj`.`ds`.`tbl`FROM proj.ds.tbl时,表将被别名为tbl。执行FROM `proj.ds.tbl`时,表将别名为proj.ds.tbl

正如您所发现的,如果标识符的第一部分与表别名匹配,则解析为表别名,而不是字段名。但是,如果在反勾号中包含全名,则别名是不同的,不会引起冲突。但是,您可以使用全名作为别名:

select `tmp.Foo`.Foo.Baz FROM `tmp.Foo`;
select Foo.Foo.Baz FROM tmp.Foo;

表示,也可以明确指定别名以避免歧义

-- selects whole row as value
select foo from tmp.foo;
-- selects column 'foo' only
select foo from tmp.foo as source_table;
-- selects whole row again
select source_table from tmp.foo as source_table; 

最新更新