Log Service は、時間関数、日付関数、間隔関数、時系列余白関数をサポートしています。 このページでは、分析文で使用できる関数を説明します。

日付と時刻のデータ型

  1. Unix timestamp:int 型で、1970年1月1日 00:00:00 (UTC) からの 秒数を示します。 たとえば、1512374067 は、 時刻 Mon Dec 4 15:54:27 CST 2017 を示します。 各ログの Log Service 組み込み時刻 __time__ はこの型です。
  2. 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')
表 1. 形式の説明
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 つの日付間の時間を計算します。

関数 説明
date_add(unit, value, timestamp) unit タイプの間隔 valuetimestamp に追加します。 間隔を差し引くには、負の value を使います。 date_add('day', -7, '2018-08-09 00:00:00') は、8月9日の7日前を示します。
date_diff(unit, timestamp1, timestamp2) unit で示される timestamp1timestamp2 の間の時間差を返します。 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
    
    以下の図にテスト結果を示します。