【问题标题】:BigQuery: How to get data with three different filters applied to same column?BigQuery:如何使用应用于同一列的三个不同过滤器获取数据?
【发布时间】:2021-04-14 19:22:33
【问题描述】:

我正在尝试在 bigquery 中获取以下条件的数据。 1. Given_Day -> Calendar_Day = PARSE_DATE('%d/%m/%Y','14/10/2020') 2. last_year_same_day -> Calendar_Day = DATE_ADD(PARSE_DATE('%d/%m/%Y','14/10/2020'), INTERVAL -1 YEAR) 3. last_week_same_day -> Calendar_Day = PARSE_DATE('%d/%m/%Y','14/10/2020') - 7

上述查询过滤器在单独使用时有效,但在一起应用时会失败,因为Calendar_Day 等同于三个条件。

尝试过的查询:

select 
      Calendar_day,
      Sales,
      from `table`
      where
        Calendar_Day = DATE_ADD(PARSE_DATE('%d/%m/%Y','14/10/2020'), INTERVAL -1 YEAR)   #last_year_same_day
        and Calendar_Day = PARSE_DATE('%d/%m/%Y','14/10/2020') - 7   #last_week_same_day
        and Calendar_Day = PARSE_DATE('%d/%m/%Y','14/10/2020')   #today

需要解决方案。提前致谢!

【问题讨论】:

    标签: sql filter google-bigquery datefilter


    【解决方案1】:

    我可能会建议:

    where Calendar_Day in (date('2020-10-14'),
                           date_add(date('2020-10-14'), interval -1 week,
                           date_add(date('2020-10-14'), interval -1 year
                          )
    

    如果您将该值传递到查询中,我认为没有理由从非标准格式解析日期。

    【讨论】:

      【解决方案2】:
        where
          (Calendar_Day = DATE_ADD(PARSE_DATE('%d/%m/%Y','14/10/2020'), INTERVAL -1 YEAR))   #last_year_same_day
          OR (Calendar_Day = PARSE_DATE('%d/%m/%Y','14/10/2020') - 7)   #last_week_same_day
          OR (Calendar_Day = PARSE_DATE('%d/%m/%Y','14/10/2020'))   #today
      

      【讨论】:

      • 如果有帮助,请考虑对答案进行投票。在 SO 上同样重要
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      相关资源
      最近更新 更多