BigQuery:unnestingtimestampintervalsbyvalues
创始人
2024-12-12 09:30:15
0

在BigQuery中,我们可以使用unnest函数来展开嵌套的数组,将其转换为单个行。如果我们想在时间戳间隔中展开值,我们可以使用EXTRACT函数来提取所需的时间单位并将其转换为扁平结构。

例如,假设我们有一个包含时间戳范围的表,如下所示:

+------+---------------------+---------------------+
| id   | start_time          | end_time            |
+------+---------------------+---------------------+
| 1    | 2022-01-01 00:00:00 | 2022-01-01 01:00:00 |
| 2    | 2022-01-01 02:00:00 | 2022-01-01 03:00:00 |
+------+---------------------+---------------------+

我们想将每个值展开为单个行,因此我们需要执行以下操作:

  1. 使用TIMESTAMP_DIFF计算时间戳之间的差异,并将其转换为秒数。

  2. 使用UNNEST展开由EXTRACT函数生成的时间戳值数组。

  3. 使用TIMESTAMP_ADD函数将开始时间和间隔相加以获取结束时间。

下面是执行上述操作的代码:

WITH intervals AS (
  SELECT 1 AS id, TIMESTAMP('2022-01-01 00:00:00') AS start_time, TIMESTAMP('2022-01-01 01:00:00') AS end_time UNION ALL
  SELECT 2 AS id, TIMESTAMP('2022-01-01 02:00:00') AS start_time, TIMESTAMP('2022-01-01 03:00:00') AS end_time
),
interval_secs AS (
  SELECT 
    id,
    DATE_DIFF(DATE(start_time), DATE('1970-01-01'), DAY) * 86400 + UNIX_SECONDS(start_time) AS start_secs,
    DATE_DIFF(DATE(end_time), DATE('1970-01-01'), DAY) * 86400 + UNIX_SECONDS(end_time) AS end_secs
  FROM intervals
),
interval_arr AS (
  SELECT 
    id,
    ARRAY(
      SELECT start_secs + (i-1) * 3600
      FROM UNNEST(GENERATE_ARRAY(1, (end_secs-start_secs)/3600+1)) AS i) 
      AS timestamp_values
  FROM interval_secs
)
SELECT 
  id,
  TIMESTAMP_SECONDS(timestamp_value) AS timestamp_value
FROM interval_arr, UNNEST(timestamp_values) AS timestamp_value;
``

相关内容

热门资讯

7分钟技巧!微信小程序干瞪眼开... 7分钟技巧!微信小程序干瞪眼开挂,wpk可以提高胜率(详细透视辅助脚本教程);《WPK辅助透视》‌:...
九分钟规律!中至麻将胡牌神器软... 九分钟规律!中至麻将胡牌神器软件,cloud辅助(详细透视辅助脚本教程);中至麻将胡牌神器软件简单的...
3分钟教学!三哥玩十三水外 挂... 1、3分钟教学!三哥玩十三水外 挂真的,wepoke透明黑科技(详细透视辅助黑科技教程)2、进入游戏...
十分钟技巧!途乐游戏有挂吗,w... 十分钟技巧!途乐游戏有挂吗,wpk德州职业代打(详细透视辅助黑科技教程) 科技详细教程;757446...
七分钟详情!上品长乐十三水辅助... 七分钟详情!上品长乐十三水辅助器下载,wepoke算法(详细透视辅助脚本教程);最新版2024是一款...
七分钟总结!网易棋牌如何提高胜... 1、七分钟总结!网易棋牌如何提高胜率,cloudpoker有辅助透视(详细透视辅助挂教程);详细教程...
8分钟规律!同城游戏辅助,we... 8分钟规律!同城游戏辅助,wepoke人有挂(详细透视辅助工具教程)1、很好的工具软件,可以解锁游戏...
3分钟攻略!琼崖手机麻将助赢神... 3分钟攻略!琼崖手机麻将助赢神器,wepoke黑科技是啥(详细透视辅助神器教程);琼崖手机麻将助赢神...
3分钟详情!乐乐游戏辅助器,微... 3分钟详情!乐乐游戏辅助器,微扑克wpk真的有辅助(详细透视辅助挂教程);乐乐游戏辅助器黑科技是一款...
六分钟辅助挂!优乐麻将有没有挂... 六分钟辅助挂!优乐麻将有没有挂,wepower系统规律(详细透视辅助脚本教程);是一款可以让一直输的...