Log Service は、時間関数、日付関数、間隔関数、時系列余白関数をサポートしています。 このページでは、分析文で使用できる関数を説明します。
日付と時刻のデータ型
- Unix timestamp:int 型で、1970年1月1日 00:00:00 (UTC) からの 秒数を示します。 たとえば、
1512374067
は、時刻 Mon Dec 4 15:54:27 CST 2017
を示します。 各ログの Log Service 組み込み時刻__time__
はこの型です。 - timestamp:時刻を文字列形式で示します。たとえば、
2017-11-01 13:30:00
のようになります。
日付関数
Log Service サポートされている共通の日付機能関数は、次のとおりです。
関数 | 説明 | 例 |
---|---|---|
current_date |
現在の日付を返します。 | latency>100| select current_date |
current_time |
現在の時間を返します。 | latency>100| select current_time |
current_timestamp |
current_date と current_time を組み合わせた結果を返します。 | latency>100| select current_timestamp |
current_timezone() |
現在のタイムスタンプを返します。 | latency>100| select current_timezone() |
from_iso8601_timestamp(string) |
ISO 8601 時刻をタイムゾーンの時刻に変換します。 | latency>100| select
from_iso8601_timestamp(iso8601) |
from_iso8601_date(string) |
ISO 8601 時刻を日付に変換します。 | latency>100| select
from_iso8601_date(iso8601) |
from_unixtime(unixtime) |
Unix のタイムスタンプをタイムスタンプとして返します。 | latency>100| select from_unixtime(1494985275)
|
from_unixtime(unixtime,string) |
指定された文字列をタイムゾーンとして使用して Unix タイムスタンプをタイムスタンプとして返します。 | latency>100| select from_unixtime (1494985275,'Asia/Shanghai') |
localtime |
現在の時刻を返します。 | latency>100| select localtime |
localtimestamp |
現在のタイムスタンプを返します。 | latency>100| select localtimestamp |
now() |
current_timestamp と同様に機能します。
|
N/A |
to_unixtime(timestamp) |
Unix タイムスタンプをタイムスタンプとして返します。 | *| select to_unixtime('2017-05-17 09:45:00.848 Asia/Shanghai') |
時間関数
MySQL の時刻形式Log Service は、%a、%b、%y などの MySQL の時刻形式をサポートしています。
関数 | 説明 | 例 |
---|---|---|
date_format(timestamp, format)
|
指定された形式を使って文字列としてタイムスタンプをフォーマットします。 | latency>100 | select date_format (date_parse('2017-05-17 09:45:00','%Y-%m-%d %H:%i:%S'), '%Y-%m-%d') |
date_parse(string, format)
|
形式を使用して文字列をタイムスタンプに解析します。 | latency>100 |select date_format (date_parse(time,'%Y-%m-%d %H:%i:%S'), '%Y-%m-%d') |
Format | 説明 |
---|---|
%a | 1 週間のうちの 1 日の省略形 (土、日など)。 |
%b | 月の略語 (Jan、Dec など)。 |
%c | 月の数字表示 有効値:[1, 12] |
%D | 接尾辞付きの月の日 (0 番目、1 番目、2 番目、3 番目など)。 |
%d | 月の日 (2 桁) 有効値:[01, 31] |
%e | 月の日 (2 桁) 有効値:[1, 31] |
%H | 24 時間形式の時刻 |
%h | 12 時間形式の時刻 |
%I | 12 時間形式の時刻 |
%i | 数字形式の分 有効値:[00, 59] |
%j | 1 年の日 有効値:[001, 366] |
%k | 時間です。 有効な値は、[0, 23] です。 |
%l | 時間。 有効値:[1, 12] |
%M | 月 有効値:1月、2月、3月、4月、5月、6月、7月、8月、9月、10月、11月、12月 |
%m | 数字タイプの月。 有効値:[01, 12] |
%p | 12 時間形式の期間の省略。 有効値:AM と PM |
%r | 12 時間形式の時刻。形式は、hh:mm:ss AM/PM 。
|
%S | 秒。 有効値:[00, 59] |
%s | 秒。 有効な値は、[0-23] です。 |
%T | 24 時間形式の時刻:(hh:mm:ss )。
|
%U | 一年の週 (日曜始まり)。 有効値:[00, 53] |
%u | 一年の週 (月曜始まり)。 有効値:[00, 53] |
%V | 一年の週 (日曜始まり)。 有効値:[00, 53] %X と%V を組み合わせてこの形式を使用してください。 |
%v | 一年の週 (月曜始まり)。 有効値:[00, 53]。%X と%V を組み合わせてこの形式を使用してください。 |
%W | 曜日の名前。 有効値:日曜日、月曜日、火曜日、水曜日、木曜日、金曜日、土曜日 |
%w | 曜日 (日曜始まり)。 有効値:[0, 6] |
%Y | 年。(2 桁) |
%y | 年。(4 桁) |
%% | エスケープ文字 % |
切り捨て関数
Log Service は切り捨て関数をサポートしています。秒、分、時、日、月、年単位で切り捨てた時間を返します。 切り捨て関数は時間に基づく統計に適用できます。
- 関数の構文:
date_trunc(unit,
- パラメーター:
パラメーターの値はタイムスタンプまたは Unix タイムスタンプです。
以下の表は、単位パラメーターの値と、x パラメーターが2001-08-22 03:04:05.000
に設定されたときの出力です。値 出力結果 秒 2001-08-22 03:04:05.000 minute 2001-08-22 03:04:00.000 hour 2001-08-22 03:00:00.000 day 2001-08-22 00:00:00.000 week 2001-08-20 00:00:00.000 month 2001-08-01 00:00:00.000 quarter 2001-07-01 00:00:00.000 year 2001-01-01 00:00:00.000 - 例:
date_trunc 関数は固定された期間ごとにしか統計を作成できません。 柔軟な時間幅 (5分おきなど) で統計を作成する必要のある場合は、数学的モジュラス法に従って GROUP BY を実行します。
* | SELECT count(1) as pv, __time__ - __time__% 300 as minute5 group by minute5 limit 100
上の文では、
%300
が該当するモジュラス法を表し、5分ごとに切り捨てが実行されます。以下は、date_trunc 関数の使用例です。*|select date_trunc('minute' , __time__) as t, truncate (avg(latency) ) , current_date group by t order by t desc limit 60
間隔関数
間隔関数は、間隔に関連する計算の実行に使用されます。 たとえば、日付の間隔を追加または削除するか、または 2 つの日付間の時間を計算します。
関数 | 説明 | 例 |
---|---|---|
|
unit タイプの間隔 value を timestamp に追加します。 間隔を差し引くには、負の value を使います。
|
date_add('day', -7, '2018-08-09 00:00:00') は、8月9日の7日前を示します。
|
date_diff(unit, timestamp1, timestamp2) |
unit で示される timestamp1 と timestamp2 の間の時間差を返します。
|
date_diff('day', '2018-08-02 00:00:00', '2018-08-09 00:00:00') = 7 |
以下の表は、間隔関数がサポートする単位パラメーターの値の一覧です。
値 | 説明 |
---|---|
millisecond | ミリ秒 |
second | 秒 |
minute | 分 |
hour | 時間 |
day | 日 |
week | 週 |
month | 月 |
quarter | 四半期、すなわち3ヶ月。 |
year | 年 |
時系列パディング関数
時系列パディング関数 time_series は時間情報のない時系列データをパディングするために使用されます。
- 関数の形式:
time_series(time_column, window, format, padding_data)
- 以下の表でパラメーターについて説明します。
パラメータ 説明 time_column Log Service が提供するデフォルト時間フィールド __time__
などの連続した時間 値は長さ、またはタイムスタンプタイプwindow タイムウィンドウ 単位:s (秒)、m (分)、H (時間)、d (日) 例:2h、5m、3d format MySQL 時間形式 (最終出力形式) padding_data 追加する内容。 有効値: - 0: adds 0.
- null: adds null.
- last: adds the last value.
- next: adds the next value.
- avg: adds the average value of the last and next values.
- 例 :
2 時間ごとにデータを初期化するには、以下の文を使用します。
* | select time_series(__time__, '2h', '%Y-%m-%d %H:%i:%s', '0') as stamp, count(*) as num from log group by stamp order by stamp
以下の図にテスト結果を示します。