ClickHouse/docs/ja/sql-reference/functions/time-window-functions.md

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

249 lines
8.8 KiB
Markdown
Raw Normal View History

2024-11-18 02:58:58 +00:00
---
slug: /ja/sql-reference/functions/time-window-functions
sidebar_position: 175
sidebar_label: タイムウィンドウ
---
# Time Window Functions
タイムウィンドウ関数は、対応するウィンドウの排他的上限と包括的下限を返します。[WindowView](../statements/create/view.md/#window-view-experimental)で作業するための関数は以下に示されます。
## tumble
タンブルタイムウィンドウは、固定された期間(`interval`)で非重複かつ連続するウィンドウにレコードを割り当てます。
**構文**
``` sql
tumble(time_attr, interval [, timezone])
```
**引数**
- `time_attr` — 日付と時間。[DateTime](../data-types/datetime.md)。
- `interval` — ウィンドウの間隔 [Interval](../data-types/special-data-types/interval.md)。
- `timezone` — [タイムゾーン名](../../operations/server-configuration-parameters/settings.md#timezone)(オプション)。
**返される値**
- 対応するタンブルウィンドウの包括的下限と排他的上限。[Tuple](../data-types/tuple.md)([DateTime](../data-types/datetime.md), [DateTime](../data-types/datetime.md))。
**例**
クエリ:
``` sql
SELECT tumble(now(), toIntervalDay('1'));
```
結果:
``` text
┌─tumble(now(), toIntervalDay('1'))─────────────┐
│ ('2024-07-04 00:00:00','2024-07-05 00:00:00') │
└───────────────────────────────────────────────┘
```
## tumbleStart
対応する[タンブルウィンドウ](#tumble)の包括的下限を返します。
**構文**
``` sql
tumbleStart(time_attr, interval [, timezone]);
```
**引数**
- `time_attr` — 日付と時間。[DateTime](../data-types/datetime.md)。
- `interval` — ウィンドウの間隔 [Interval](../data-types/special-data-types/interval.md)。
- `timezone` — [タイムゾーン名](../../operations/server-configuration-parameters/settings.md#timezone)(オプション)。
上記のパラメータは[tuple](../data-types/tuple.md)としても関数に渡すことができます。
**返される値**
- 対応するタンブルウィンドウの包括的下限。[DateTime](../data-types/datetime.md), [Tuple](../data-types/tuple.md)または[UInt32](../data-types/int-uint.md)。
**例**
クエリ:
```sql
SELECT tumbleStart(now(), toIntervalDay('1'));
```
結果:
```response
┌─tumbleStart(now(), toIntervalDay('1'))─┐
│ 2024-07-04 00:00:00 │
└────────────────────────────────────────┘
```
## tumbleEnd
対応する[タンブルウィンドウ](#tumble)の排他的上限を返します。
**構文**
``` sql
tumbleEnd(time_attr, interval [, timezone]);
```
**引数**
- `time_attr` — 日付と時間。[DateTime](../data-types/datetime.md)。
- `interval` — ウィンドウの間隔 [Interval](../data-types/special-data-types/interval.md)。
- `timezone` — [タイムゾーン名](../../operations/server-configuration-parameters/settings.md#timezone)(オプション)。
上記のパラメータは[tuple](../data-types/tuple.md)としても関数に渡すことができます。
**返される値**
- 対応するタンブルウィンドウの排他的上限。[DateTime](../data-types/datetime.md), [Tuple](../data-types/tuple.md)または[UInt32](../data-types/int-uint.md)。
**例**
クエリ:
```sql
SELECT tumbleEnd(now(), toIntervalDay('1'));
```
結果:
```response
┌─tumbleEnd(now(), toIntervalDay('1'))─┐
│ 2024-07-05 00:00:00 │
└──────────────────────────────────────┘
```
## hop
ホッピングタイムウィンドウは固定された期間(`window_interval`)を持ち、指定されたホップ間隔(`hop_interval`)で移動します。`hop_interval`が`window_interval`より小さい場合、ホッピングウィンドウは重複しています。したがって、レコードは複数のウィンドウに割り当てることができます。
``` sql
hop(time_attr, hop_interval, window_interval [, timezone])
```
**引数**
- `time_attr` — 日付と時間。[DateTime](../data-types/datetime.md)。
- `hop_interval` — 正のホップ間隔。[Interval](../data-types/special-data-types/interval.md)。
- `window_interval` — 正のウィンドウ間隔。[Interval](../data-types/special-data-types/interval.md)。
- `timezone` — [タイムゾーン名](../../operations/server-configuration-parameters/settings.md#timezone)(オプション)。
**返される値**
- 対応するホッピングウィンドウの包括的下限と排他的上限。[Tuple](../data-types/tuple.md)([DateTime](../data-types/datetime.md), [DateTime](../data-types/datetime.md))。
:::note
一つのレコードが複数のホップウィンドウに割り当てられるため、hop関数が`WINDOW VIEW`なしで使用されるとき、関数は**最初の**ウィンドウの境界のみを返します。
:::
**例**
クエリ:
``` sql
SELECT hop(now(), INTERVAL '1' DAY, INTERVAL '2' DAY);
```
結果:
``` text
┌─hop(now(), toIntervalDay('1'), toIntervalDay('2'))─┐
│ ('2024-07-03 00:00:00','2024-07-05 00:00:00') │
└────────────────────────────────────────────────────┘
```
## hopStart
対応する[ホッピングウィンドウ](#hop)の包括的下限を返します。
**構文**
``` sql
hopStart(time_attr, hop_interval, window_interval [, timezone]);
```
**引数**
- `time_attr` — 日付と時間。[DateTime](../data-types/datetime.md)。
- `hop_interval` — 正のホップ間隔。[Interval](../data-types/special-data-types/interval.md)。
- `window_interval` — 正のウィンドウ間隔。[Interval](../data-types/special-data-types/interval.md)。
- `timezone` — [タイムゾーン名](../../operations/server-configuration-parameters/settings.md#timezone)(オプション)。
上記のパラメータは[tuple](../data-types/tuple.md)としても関数に渡すことができます。
**返される値**
- 対応するホッピングウィンドウの包括的下限。[DateTime](../data-types/datetime.md), [Tuple](../data-types/tuple.md)または[UInt32](../data-types/int-uint.md)。
:::note
一つのレコードが複数のホップウィンドウに割り当てられるため、hop関数が`WINDOW VIEW`なしで使用されるとき、関数は**最初の**ウィンドウの境界のみを返します。
:::
**例**
クエリ:
``` sql
SELECT hopStart(now(), INTERVAL '1' DAY, INTERVAL '2' DAY);
```
結果:
``` text
┌─hopStart(now(), toIntervalDay('1'), toIntervalDay('2'))─┐
│ 2024-07-03 00:00:00 │
└─────────────────────────────────────────────────────────┘
```
## hopEnd
対応する[ホッピングウィンドウ](#hop)の排他的上限を返します。
**構文**
``` sql
hopEnd(time_attr, hop_interval, window_interval [, timezone]);
```
**引数**
- `time_attr` — 日付と時間。[DateTime](../data-types/datetime.md)。
- `hop_interval` — 正のホップ間隔。[Interval](../data-types/special-data-types/interval.md)。
- `window_interval` — 正のウィンドウ間隔。[Interval](../data-types/special-data-types/interval.md)。
- `timezone` — [タイムゾーン名](../../operations/server-configuration-parameters/settings.md#timezone)(オプション)。
上記のパラメータは[tuple](../data-types/tuple.md)としても関数に渡すことができます。
**返される値**
- 対応するホッピングウィンドウの排他的上限。[DateTime](../data-types/datetime.md), [Tuple](../data-types/tuple.md)または[UInt32](../data-types/int-uint.md)。
:::note
一つのレコードが複数のホップウィンドウに割り当てられるため、hop関数が`WINDOW VIEW`なしで使用されるとき、関数は**最初の**ウィンドウの境界のみを返します。
:::
**例**
クエリ:
``` sql
SELECT hopEnd(now(), INTERVAL '1' DAY, INTERVAL '2' DAY);
```
結果:
``` text
┌─hopEnd(now(), toIntervalDay('1'), toIntervalDay('2'))─┐
│ 2024-07-05 00:00:00 │
└───────────────────────────────────────────────────────┘
```
## 関連コンテンツ
- ブログ: [ClickHouseでの時系列データの処理](https://clickhouse.com/blog/working-with-time-series-data-and-functions-ClickHouse)