クエリと分析中に、タイムスタンプを指定形式に変換するなど、ログの時間フィールドを処理する必要があることがよくあります。 本ページでは、いくつかの例を用いて時間フィールドを変換する方法を説明します。

ログには、時間を記録する複数のフィールドが含まれる場合があります。 例:
  • __time__: API または SDK を使用してログデータを書き込むときに指定するログ時間。 このフィールドは、ログデータの送信、クエリ、および分析に使用できます。
  • ログの元の時間フィールド: ログが生成されるときにログイベントの発生時間を記録するフィールド。 このフィールドは生ログにあります。

時間フィールドの形式が異なると、表示も読み取りも困難になります。 この場合、クエリと分析の時間フィールドの指定形式に変換できます。 例:

__time__ をタイムスタンプに変換

from_unixtime 関数を使用して __time__ フィールドをタイムスタンプに変換することを推奨します。
* | select from_unixtime(__time__) 

__time__ を指定形式で表示

__time__ フィールドを YYYY-MM-DD HH:MM:SS 形式で表示します。 date_format 関数を使用してフィールドを変換することを推奨します。
* | select date_format(__time__, '%Y-%m-%d %H:%i:%S') 

ログの時刻を指定形式に変換

ログの時間フィールドを指定形式 ( YYYY-MM-DD HH:MM:SS) に変換し、 YYYY-MM-DD 部分に対してGROUP BY 操作を実行します。 date_format 関数を使用してフィールドを変換することを推奨します。
  • サンプルログ:
    __topic__:  
    body_byte_sent: 307
    hostname: www.host1.com
    http_user_agent: Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) Mobile/14G60 QQ/7.1.8.452 V1_IPH_SQ_7.1.8_1_APP_A Pixel/750 Core/UIWebView NetType/WIFI QBWebViewType/1
    method: GET
    referer: www.host0.com
    remote_addr: 36.63.1.23
    request_length: 111
    request_time: 2.705
    status: 200
    upstream_response_time: 0.225582883754
    url: /? k0=v9&
    time:2017-05-17 09:45:00
  • SQL 文の例:
    * | select date_format (date_parse(time,'%Y-%m-%d %H:%i:%S'), '%Y-%m-%d') as day, count(1) as uv group by day order by day asc