您熟悉没有别名时的大查询问题吗?

Are you familiar to the big query issue when there is no alias?

在 CoolaData,我们处理大量数据,支持行为分析。我只是 运行 在不包含别名的 select 语句中生成了错误的字段名称,即 - "select a.dt, a.device_type from..."

我发现,而不是以下结果:"a.dt" 应该导致 - "dt","a.device_type" 应该导致 - "device_type"。 大查询错误地导致不同的名称,即:"a.dt" 被错误地命名为 "a_dt",而 "a.device_type" 被错误地命名为 - "a_device_type".

不工作:

SELECT 1 AS Number_of_Records, Custom_SQL_Query.a_device_type AS 
a_device_type, Custom_SQL_Query.a_dt AS a_dt, FROM 
  ( SELECT a.dt, a.device_type, FROM ( SELECT DATE(event_time_ts) AS 
    dt, lp_device_type AS device_type, item_id AS item_id, FROM 
    coola_demo_v2_dataset.pv60_session) AS 
      a LEFT JOIN EACH ( SELECT item_id AS item_id, FROM 
        coola_demo_v2_dataset.arm_item_dim) AS b ON a.item_id = b.item_id GROUP EACH BY 
           1, 2 LIMIT 10) AS Custom_SQL_Query

工作:

SELECT * FROM ( SELECT a.dt, a.device_type, FROM 
  ( SELECT DATE(event_time_ts) AS dt, lp_device_type AS 
    device_type, item_id AS item_id, FROM 
       coola_demo_v2_dataset.pv60_session) AS 
         a LEFT JOIN EACH ( SELECT item_id AS item_id, FROM 
           coola_demo_v2_dataset.arm_item_dim) AS 
           b ON a.item_id = b.item_id GROUP EACH BY 
             1, 2 LIMIT 10) AS Custom_SQL_Query 

你熟悉这个问题吗?是否有配置 BigQuery 以不同方式操作的选项?

我认为上面描述的问题实际上是特征:o)

1) 当您没有明确提供别名时 - 它是在点符号之后构造的,点替换为下划线

SELECT a.dt FROM( ..   --> a_dt in output

以上将产生带有 a_dt 命名字段

的输出

如果您希望将 filed 命名为 dt,则应使用以下方法

SELECT a.dt as dt FROM( ..     --> dt in output

2) 如果你需要引用子字段 - select -

SELECT a_dt FROM( .. --> error

你仍然需要像下面这样使用点符号

SELECT a.dt FROM( .. --> a_dt in output  

SELECT a.dt as dt FROM( .. --> dt in output

3) 到目前为止,没有任何配置可以为您更改此设置(至少据我所知)