メインコンテンツまでスキップ
Sumo Logic Japanese

format

format operator を使用すると、parse されたフィールドのデータを形式して組み合わせることができます。数値、文字列、および日付をユーザ定義の文字列にフォーマットできます。これにより、ログに埋もれて解読が困難なデータ (日付や金額) を、人間が読みやすい形式にフォーマットできます。

concatformat operator の簡易版であり、単純な使用事例であれば concat operator を使用できます。

構文

  • format(<formatSpecifier>, <field1>[, <field2>, <field3>, ...]) as <field>

Sumo Logic の format operator は、docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax に定義されているすべての Java String.format 構文をサポートします。

ルール

  • format operator への最初の引数は、形式指定子 (文字列) です。
  • format operator で形式した新しいフィールドの名前を指定する必要があります。デフォルトのエイリアスはありません。
  • この operator で形式できる入力フィールドの最大数は 16 です。使用したいフィールド数が 16 を超える場合は、operator を組み合わせて使用できます。
  • AND と OR はサポートされません。
  • フィールドが null または互換性のない値の場合はエラーが返されます。
  • format operator は aggregation operator の後に使用してください。
  • 16 進値としてフォーマットする場合は、事前にデータ タイプを数値に変換する必要があります。そうしておかないと、データは除外されます。

2 つの文字列から 1 つの文字列への形式

このクエリでは、エラーを検索して、「fiveMinuteRate」というフィールドを「rate」として parse してから、「Five Minute Rate is :」というテキストと rate を組み合わせて「formattedVal」というフィールドを生成します。

error 
| parse "fiveMinuteRate=*," as rate 
| format("%s : %s","Five Minute Rate is :" , rate) as formattedVal

結果は次のようになります。

format

数値の形式

このクエリは、メッセージ ログの数値フィールドのデータを、人間が読める金額として形式します。

format( "$%.2f",number) as currency

このクエリも同じ処理を行いますが、千の位にコンマを入れています。

format("$%,.2f",number)  as currency

日付のフォーマット

次のクエリは、メッセージ ログのフィールドを、人間が読める日付に形式します。

| parse “*-*-*” “as year, month, day
| format (“%d/%d/%d”, month, day, year) as date

文字列の大文字への変換

この形式指定子は、文字列を大文字に変換します。

format("%S: %d", name, age) as personAge

数値データの 16 進値への変換

collectorId というフィールドを大文字の 16 進値に変換するには、次のように指定します。

| int(collectorId) as collectoridint
| format("%016X", collectoridint) as collectoridhex
| count by collectorId, collectoridint, collectoridhex

単一値の末尾への記号 (% など) の付加

このクエリは、平均キャッシュ ミス パーセンテージなどの単一値の末尾に「%」を付加します。

| format("%.3f %s", avg_cache_miss_pct,"%") as avg_cache_miss_pct

その他のオプションについては「toLowerCase と toUpperCase」を参照してください。

  • この記事は役に立ちましたか?