【问题标题】:Translating Oracle Range Following Functionto BigQuery将 Oracle 范围跟踪函数转换为 BigQuery
【发布时间】:2021-09-07 19:27:46
【问题描述】:

我在将以下 oracle RANGE 函数转换为 BigQuery 时遇到问题。 Oracle 似乎允许在日期时间字段中使用小数位,但 BigQuery 不允许。以下是查询中需要翻译的部分:

case when substr(PHONE, 0, 3) not in ('123','345')
and total_count is null 
and identity is not null
and MAX(1) OVER(
PARTITION BY PHONE
ORDER BY 
      START_DATE_AND_TIME
RANGE between 0.000023148148 FOLLOWING AND 0.003472222 FOLLOWING
) = 1 THEN
1
END as CALL

【问题讨论】:

  • 请解释你要做什么。

标签: sql oracle google-bigquery


【解决方案1】:

在 BigQuery 中,您需要将日期/时间值转换为数字。例如,对于一定的秒数:

(CASE WHEN MAX(1) OVER (PARTITION BY PHONE 
                        ORDER BY UNIX_SECONDS(START_DATE_AND_TIME)
                        RANGE BETWEEN 2 FOLLOWING AND 300 FOLLOWING
                       ) = 1 THEN 1
 END) 

注意:在 BigQuery 中,您通常只创建一个布尔标志,而不是使用 case

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    • 1970-01-01
    相关资源
    最近更新 更多