【问题标题】:Querying multiple tables in Big Query with different dateformat在 Big Query 中使用不同的日期格式查询多个表
【发布时间】:2020-11-13 12:52:02
【问题描述】:

我对使用 BigQuery 和编写查询非常陌生

我想从 2 个不同的表中提取数据,每个表都有一个带有日期戳但格式不同的字段。所有字段都以纯文本形式导入,因此我必须将每个字段转换为其他格式。

表 1 的格式为“2020-10-09 00:00:00”,表 2 的日期字段格式为“2020-10-09” 这是我使用的代码

SELECT 
e.Region,
e.OmradeNamn,
SAFE_CAST(e.Datum as Date) as Datum,
FORMAT_DATE('%u', SAFE_CAST(e.Datum as Date)) AS Veckodag,
e.Rutt_Stilling,
...
...
...
...
r.NA_ArbPass,

FROM `leveranskvalitet` e 
  LEFT JOIN `rutterap` r 
  ON e.Rutt_Stilling = r.Rutt_Stilling
  and e.Datum = r.Datum

  Where cast(LEFT(e.Datum,10) as date) =  Cast(@DATUM as date)
  ...
  ...
  Order by e.Rutt_Stilling ASC>

从表 2 中它只得到 'NULL'

如果我使用另一个表作为表 1,日期格式为“2020-10-09”,我从表 2 中提取数据没有问题

要选择日期,我使用另一个工作表中的单元格引用 (@Datum)

感谢您对此的帮助 罗杰

【问题讨论】:

    标签: google-bigquery date-format


    【解决方案1】:

    假设数据类型是时间戳和日期,您可以执行以下操作:

    with temp_ts as (
     select timestamp('2020-10-09 00:00:00') as ts
    ),
    temp_dt as (
     select date('2020-10-09') as dt
    )
    
    select *
    from temp_ts t
    join temp_dt d
     on extract(date from t.ts) = d.dt;
    

    根据您的查询:

    SELECT 
    e.Region,
    e.OmradeNamn,
    SAFE_CAST(e.Datum as Date) as Datum,
    FORMAT_DATE('%u', SAFE_CAST(e.Datum as Date)) AS Veckodag,
    e.Rutt_Stilling,
    ...
    ...
    ...
    ...
    r.NA_ArbPass,
    
    FROM `leveranskvalitet` e 
      LEFT JOIN `rutterap` r 
      ON e.Rutt_Stilling = r.Rutt_Stilling
      and date(cast(e.Datum as datetime) = cast(r.Datum as date)
    
      Where cast(LEFT(e.Datum,10) as date) =  Cast(@DATUM as date)
      ...
      ...
      Order by e.Rutt_Stilling ASC>
    

    【讨论】:

    • 非常感谢。但是,我是这个的新手。我该如何使用它?我把你的代码放在第一位,但是我的代码有什么需要改变的
    • 在你上面的场景中哪个是表1,哪个是表2?
    • leveranskvalitet e 是表 1,rutterap r 是表 2
    • 我已经更新了答案,加入rutterap 现在包含提取日期逻辑。
    • 这最后一部分给出了一个错误。就像我在问题中写的那样,所有字段都只是纯文本,没有文件被格式化,所以我必须转换每个字段。错误是“参数类型的提取:DATE FROM STRING”,所以我猜这是因为它是纯文本而不是真实日期。有什么建议吗?
    猜你喜欢
    • 2012-10-21
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    相关资源
    最近更新 更多