没有别名时,您是否熟悉大查询问题?

时间:2016-01-17 14:06:11

标签: sql google-bigquery

在CoolaData中,我们处理大量数据,支持行为分析。我在一个不包含别名的select语句中运行生成错误字段名的查询,即 - "从...中选择a.dt,a.device_type;"

我发现的是,而不是以下结果:" 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采取不同的行动?

1 个答案:

答案 0 :(得分:0)

我认为上述问题实际上就是这个特征:o)

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

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

上面将使用a_dt命名字段

生成输出

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

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

2)如果您需要从子选择 -

引用字段
SELECT a_dt FROM( .. --> error

你仍然需要使用如下的点符号

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

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

3)到目前为止,没有任何配置可以改变这一点(至少我知道)