Share via


session_window 群組表達式

適用於:檢查標示為是 Databricks SQL 檢查標示為是 Databricks Runtime 10.4 LTS 和更新版本

在時間戳表示式上建立會話視窗。

語法

session_window(expr, gapDuration)

引數

  • exprTIMESTAMP:指定視窗主旨的表達式。
  • gapDurationSTRING:表示窗口寬度為INTERVAL DAY TO SECOND常值的表達式。

傳回

傳回一組可使用聚合函數運作的群組。 資料 GROUP BY 列名稱為 session_window。 其類型為 STRUCT<start:TIMESTAMP, end:TIMESTAMP>

範例

> SELECT a, session_window.start, session_window.end, count(*) as cnt
    FROM VALUES ('A1', '2021-01-01 00:00:00'),
                ('A1', '2021-01-01 00:04:30'),
                ('A1', '2021-01-01 00:10:00'),
                ('A2', '2021-01-01 00:01:00') AS tab(a, b)
    GROUP by a, session_window(b, '5 minutes')
    ORDER BY a, start;
  A1  2021-01-01 00:00:00  2021-01-01 00:09:30  2
  A1  2021-01-01 00:10:00  2021-01-01 00:15:00  1
  A2  2021-01-01 00:01:00  2021-01-01 00:06:00  1

> SELECT a, session_window.start, session_window.end, count(*) as cnt
    FROM VALUES ('A1', '2021-01-01 00:00:00'),
                ('A1', '2021-01-01 00:04:30'),
                ('A1', '2021-01-01 00:10:00'),
                ('A2', '2021-01-01 00:01:00'),
                ('A2', '2021-01-01 00:04:30') AS tab(a, b)
    GROUP by a, session_window(b, CASE WHEN a = 'A1' THEN '5 minutes'
                                       WHEN a = 'A2' THEN '1 minute'
                                       ELSE '10 minutes' END)
    ORDER BY a, start;
  A1  2021-01-01 00:00:00  2021-01-01 00:09:30  2
  A1  2021-01-01 00:10:00  2021-01-01 00:15:00  1
  A2  2021-01-01 00:01:00  2021-01-01 00:02:00  1
  A2  2021-01-01 00:04:30  2021-01-01 00:05:30  1