Cloudflare Pipelines 标量函数实现基于 Apache DataFusion ↗(通过 Arroyo ↗),本文档源自 DataFusion 函数参考。
计算时间间隔并返回最接近指定时间戳的间隔起始时间。
使用 date_bin 通过将行分组到基于时间的"bin"或"window"中,并对每个窗口应用聚合或选择函数来对时间序列数据进行降采样。
例如,如果您将数据"分箱"或"窗口化"为 15 分钟间隔,输入时间戳 2023-01-01T18:18:18Z 将更新为其所在 15 分钟 bin 的起始时间:2023-01-01T18:15:00Z。
date_bin(interval, expression, origin-timestamp)参数
- interval: 分箱间隔。
- expression: 要操作的时间表达式。 可以是常量、列或函数。
- origin-timestamp: 可选。用于确定 bin 边界的起始点。如果未指定,
默认为
1970-01-01T00:00:00Z(UTC 中的 UNIX 纪元)。
支持以下间隔:
- nanoseconds
- microseconds
- milliseconds
- seconds
- minutes
- hours
- days
- weeks
- months
- years
- century
将时间戳值截断到指定精度。
date_trunc(precision, expression)参数
-
precision: 要截断到的时间精度。 支持以下精度:
- year / YEAR
- quarter / QUARTER
- month / MONTH
- week / WEEK
- day / DAY
- hour / HOUR
- minute / MINUTE
- second / SECOND
-
expression: 要操作的时间表达式。 可以是常量、列或函数。
别名
- datetrunc
date_trunc 的别名。
以整数形式返回日期的指定部分。
date_part(part, expression)参数
-
part: 要返回的日期部分。 支持以下日期部分:
- year
- quarter (根据日期所在年份的四分位,返回 [1, 4] 范围内的值)
- month
- week (一年中的第几周)
- day (一个月中的第几天)
- hour
- minute
- second
- millisecond
- microsecond
- nanosecond
- dow (一周中的第几天)
- doy (一年中的第几天)
- epoch (自 Unix 纪元以来的秒数)
-
expression: 要操作的时间表达式。 可以是常量、列或函数。
别名
- datepart
date_part 的别名。
以整数形式返回时间值的子字段。
extract(field FROM source)等效于调用 date_part('field', source)。例如,以下等效:
extract(day FROM '2024-04-13'::date)
date_part('day', '2024-04-13'::date)参见 date_part。
从年/月/日组件部分创建日期。
make_date(year, month, day)参数
- year: 创建日期时使用的年份。 可以是常量、列或函数,以及算术运算符的任何组合。
- month: 创建日期时使用的月份。 可以是常量、列或函数,以及算术运算符的任何组合。
- day: 创建日期时使用的天数。 可以是常量、列或函数,以及算术运算符的任何组合。
示例
> select make_date(2023, 1, 31);
+-------------------------------------------+
| make_date(Int64(2023),Int64(1),Int64(31)) |
+-------------------------------------------+
| 2023-01-31 |
+-------------------------------------------+
> select make_date('2023', '01', '31');
+-----------------------------------------------+
| make_date(Utf8("2023"),Utf8("01"),Utf8("31")) |
+-----------------------------------------------+
| 2023-01-31 |
+-----------------------------------------------+基于 [Chrono 格式] 返回日期、时间、时间戳或持续时间的字符串表示。与 PostgreSQL 等效函数不同,不支持数字格式化。
to_char(expression, format)参数
- expression: 要操作的表达式。 可以是常量、列或函数,其结果为日期、时间、时间戳或持续时间。
- format: 用于转换表达式的 [Chrono 格式] 字符串。
示例
> > select to_char('2023-03-01'::date, '%d-%m-%Y');
+----------------------------------------------+
| to_char(Utf8("2023-03-01"),Utf8("%d-%m-%Y")) |
+----------------------------------------------+
| 01-03-2023 |
+----------------------------------------------+别名
- date_format
将值转换为时间戳(YYYY-MM-DDT00:00:00Z)。
支持字符串、整数、无符号整数和双精度类型作为输入。
如果未提供 [Chrono 格式],字符串将解析为 RFC3339(例如 '2023-07-20T05:44:00')。
整数、无符号整数和双精度数被解释为自 Unix 纪元(1970-01-01T00:00:00Z)以来的秒数。
返回相应的时间戳。
注意:to_timestamp 返回 Timestamp(Nanosecond)。整数输入的支持范围为 -9223372037 到 9223372036。
字符串输入的支持范围为 1677-09-21T00:12:44.0 到 2262-04-11T23:47:16.0。请使用 to_timestamp_seconds
处理超出支持范围的输入。
to_timestamp(expression[, ..., format_n])参数
- expression: 要操作的表达式。 可以是常量、列或函数,以及算术运算符的任何组合。
- format_n: 可选的 [Chrono 格式] 字符串,用于解析表达式。格式将按出现顺序依次尝试, 返回第一个成功解析的结果。如果所有格式都无法成功解析表达式,将返回错误。
示例
> select to_timestamp('2023-01-31T09:26:56.123456789-05:00');
+-----------------------------------------------------------+
| to_timestamp(Utf8("2023-01-31T09:26:56.123456789-05:00")) |
+-----------------------------------------------------------+
| 2023-01-31T14:26:56.123456789 |
+-----------------------------------------------------------+
> select to_timestamp('03:59:00.123456789 05-17-2023', '%c', '%+', '%H:%M:%S%.f %m-%d-%Y');
+--------------------------------------------------------------------------------------------------------+
| to_timestamp(Utf8("03:59:00.123456789 05-17-2023"),Utf8("%c"),Utf8("%+"),Utf8("%H:%M:%S%.f %m-%d-%Y")) |
+--------------------------------------------------------------------------------------------------------+
| 2023-05-17T03:59:00.123456789 |
+--------------------------------------------------------------------------------------------------------+将值转换为时间戳(YYYY-MM-DDT00:00:00.000Z)。
支持字符串、整数和无符号整数类型作为输入。
如果未提供 [Chrono 格式],字符串将解析为 RFC3339(例如 '2023-07-20T05:44:00')。
整数和无符号整数被解释为自 Unix 纪元(1970-01-01T00:00:00Z)以来的毫秒数。
返回相应的时间戳。
to_timestamp_millis(expression[, ..., format_n])参数
- expression: 要操作的表达式。 可以是常量、列或函数,以及算术运算符的任何组合。
- format_n: 可选的 [Chrono 格式] 字符串,用于解析表达式。格式将按出现顺序依次尝试, 返回第一个成功解析的结果。如果所有格式都无法成功解析表达式,将返回错误。
示例
> select to_timestamp_millis('2023-01-31T09:26:56.123456789-05:00');
+------------------------------------------------------------------+
| to_timestamp_millis(Utf8("2023-01-31T09:26:56.123456789-05:00")) |
+------------------------------------------------------------------+
| 2023-01-31T14:26:56.123 |
+------------------------------------------------------------------+
> select to_timestamp_millis('03:59:00.123456789 05-17-2023', '%c', '%+', '%H:%M:%S%.f %m-%d-%Y');
+---------------------------------------------------------------------------------------------------------------+
| to_timestamp_millis(Utf8("03:59:00.123456789 05-17-2023"),Utf8("%c"),Utf8("%+"),Utf8("%H:%M:%S%.f %m-%d-%Y")) |
+---------------------------------------------------------------------------------------------------------------+
| 2023-05-17T03:59:00.123 |
+---------------------------------------------------------------------------------------------------------------+将值转换为时间戳(YYYY-MM-DDT00:00:00.000000Z)。
支持字符串、整数和无符号整数类型作为输入。
如果未提供 [Chrono 格式],字符串将解析为 RFC3339(例如 '2023-07-20T05:44:00')。
整数和无符号整数被解释为自 Unix 纪元(1970-01-01T00:00:00Z)以来的微秒数
返回相应的时间戳。
to_timestamp_micros(expression[, ..., format_n])参数
- expression: 要操作的表达式。 可以是常量、列或函数,以及算术运算符的任何组合。
- format_n: 可选的 [Chrono 格式] 字符串,用于解析表达式。格式将按出现顺序依次尝试, 返回第一个成功解析的结果。如果所有格式都无法成功解析表达式,将返回错误。
示例
> select to_timestamp_micros('2023-01-31T09:26:56.123456789-05:00');
+------------------------------------------------------------------+
| to_timestamp_micros(Utf8("2023-01-31T09:26:56.123456789-05:00")) |
+------------------------------------------------------------------+
| 2023-01-31T14:26:56.123456 |
+------------------------------------------------------------------+
> select to_timestamp_micros('03:59:00.123456789 05-17-2023', '%c', '%+', '%H:%M:%S%.f %m-%d-%Y');
+---------------------------------------------------------------------------------------------------------------+
| to_timestamp_micros(Utf8("03:59:00.123456789 05-17-2023"),Utf8("%c"),Utf8("%+"),Utf8("%H:%M:%S%.f %m-%d-%Y")) |
+---------------------------------------------------------------------------------------------------------------+
| 2023-05-17T03:59:00.123456 |
+---------------------------------------------------------------------------------------------------------------+将值转换为时间戳(YYYY-MM-DDT00:00:00.000000000Z)。
支持字符串、整数和无符号整数类型作为输入。
如果未提供 [Chrono 格式],字符串将解析为 RFC3339(例如 '2023-07-20T05:44:00')。
整数和无符号整数被解释为自 Unix 纪元(1970-01-01T00:00:00Z)以来的纳秒数。
返回相应的时间戳。
to_timestamp_nanos(expression[, ..., format_n])参数
- expression: 要操作的表达式。 可以是常量、列或函数,以及算术运算符的任何组合。
- format_n: 可选的 [Chrono 格式] 字符串,用于解析表达式。格式将按出现顺序依次尝试, 返回第一个成功解析的结果。如果所有格式都无法成功解析表达式,将返回错误。
示例
> select to_timestamp_nanos('2023-01-31T09:26:56.123456789-05:00');
+-----------------------------------------------------------------+
| to_timestamp_nanos(Utf8("2023-01-31T09:26:56.123456789-05:00")) |
+-----------------------------------------------------------------+
| 2023-01-31T14:26:56.123456789 |
+-----------------------------------------------------------------+
> select to_timestamp_nanos('03:59:00.123456789 05-17-2023', '%c', '%+', '%H:%M:%S%.f %m-%d-%Y');
+--------------------------------------------------------------------------------------------------------------+
| to_timestamp_nanos(Utf8("03:59:00.123456789 05-17-2023"),Utf8("%c"),Utf8("%+"),Utf8("%H:%M:%S%.f %m-%d-%Y")) |
+--------------------------------------------------------------------------------------------------------------+
| 2023-05-17T03:59:00.123456789 |
+---------------------------------------------------------------------------------------------------------------+将值转换为时间戳(YYYY-MM-DDT00:00:00.000Z)。
支持字符串、整数和无符号整数类型作为输入。
如果未提供 [Chrono 格式],字符串将解析为 RFC3339(例如 '2023-07-20T05:44:00')。
整数和无符号整数被解释为自 Unix 纪元(1970-01-01T00:00:00Z)以来的秒数。
返回相应的时间戳。
to_timestamp_seconds(expression[, ..., format_n])参数
- expression: 要操作的表达式。 可以是常量、列或函数,以及算术运算符的任何组合。
- format_n: 可选的 [Chrono 格式] 字符串,用于解析表达式。格式将按出现顺序依次尝试, 返回第一个成功解析的结果。如果所有格式都无法成功解析表达式,将返回错误。
示例
> select to_timestamp_seconds('2023-01-31T09:26:56.123456789-05:00');
+-------------------------------------------------------------------+
| to_timestamp_seconds(Utf8("2023-01-31T09:26:56.123456789-05:00")) |
+-------------------------------------------------------------------+
| 2023-01-31T14:26:56 |
+-------------------------------------------------------------------+
> select to_timestamp_seconds('03:59:00.123456789 05-17-2023', '%c', '%+', '%H:%M:%S%.f %m-%d-%Y');
+----------------------------------------------------------------------------------------------------------------+
| to_timestamp_seconds(Utf8("03:59:00.123456789 05-17-2023"),Utf8("%c"),Utf8("%+"),Utf8("%H:%M:%S%.f %m-%d-%Y")) |
+----------------------------------------------------------------------------------------------------------------+
| 2023-05-17T03:59:00 |
+----------------------------------------------------------------------------------------------------------------+将整数转换为 RFC3339 时间戳格式(YYYY-MM-DDT00:00:00.000000000Z)。
整数和无符号整数被解释为自 Unix 纪元(1970-01-01T00:00:00Z)以来的纳秒数,
返回相应的时间戳。
from_unixtime(expression)参数
- expression: 要操作的表达式。 可以是常量、列或函数,以及算术运算符的任何组合。
返回 pipeline 启动时的 UTC 时间戳。
now() 返回值在查询编译时确定,在整个 pipeline 执行过程中保持恒定。