transpose
Excel のピボット テーブルと同じように、transpose operator はリストを次の例のように [Aggregates (集計)] タブのテーブルに変換します。 行と列を構成するデータはユーザが指定できます。
transpose を使用しないと、次のクエリは単なる事実を返すだけで有用なテーブルとはなりません。
_sourceCategory=Labs/Apache/Access
| timeslice 5m
| count by _timeslice, status_code
transpose を使用することで、タイムスライスを行、ステータス コードを列として定義できます。
_sourceCategory=Labs/Apache/Access
| timeslice 5m
| count by _timeslice, status_code
| transpose row _timeslice column status_code
この情報をテーブルとして表現するため、transpose は集計検索結果から列を動的に作成します。これにより、検索結果をフィールドに変換することでクエリの出力を変更できるため、出力スキーマを知らなくてもクエリを設計できます。このように、transpose はダッシュボード パネルのグラフに合わせてデータを正しくフォーマットします。
たとえば、下の 2 つのスクリーンショットは、同じ時間範囲の同じデータを表していますが、2 つ目のスクリーンショットは transpose operator を使用したクエリから生成されています。
transpose を使用しないと、データはタイムスライスに従って表現されますが、ステータス コードでは集計されません。
transpose を使用することで、結果がタイムスライスごとのステータス コードとして読みやすくなります。
構文
transpose row [<row fields>] column [<column fields>] as [<output fields>]
transpose row [<row fields>] column [<column fields>]
結果は 3 通りの方法で変更できます。
- 変数名のコンマ区切りリスト (例: a, b) を使用すると、指定された出力フィールドのみが出力テーブルに表示されます。
- 変数名のコンマ区切りリストに続けてコンマとアスタリスク (例: a, b, *) を使用すると、指定された出力フィールドに続いて動的フィールドが出力テーブルに表示されます。
- アスタリスクのみ (*) を使用すると、すべての動的フィールドが出力テーブルに表示されます。結果テーブルにすべてのフィールドを追加したい場合は、このオプションを使用してください。
- transpose の後でフィールドを参照したい場合は、出力フィールドとしてフィールド名を指定します。
フィールド名に特殊文字 (- など) が含まれる場合は、フィールド名を %"" で囲みます (例: %"test-zz-1")。データから算出された列名には特殊文字が含まれることが多いため、transpose operator を使用する際はこのことを忘れないようにしてください。
ルール
- transpose は join operator とは併用できません。
- transpose は、最大 300 件の動的フィールド (作成される列) をサポートします。
- フィールドはアルファベット順に戻されます。
例
モジュールごとのエラーの表示
エラーがモジュールごとにログに記録されるとします。ここでは、モジュール名ごとにエラーを表示します。次のようなクエリを実行するとします。
error | parse "module=*]" as
module
| timeslice 1m
| count as value by _timeslice, module
| transpose row _timeslice column module as [moduleName1, moduleName2, ...]
結果では、各モジュールが個別の色で表示されます。
[Stacking (積み上げ)] ([Change Properties (プロパティの変更)] の下にあります) の設定を [Normal (標準)] に変更して、グラフがどのように変わるかを見てみましょう。詳細については、「グラフ検索結果」を参照してください。
ユーザによるログイン成功の表示
transpose operator は、生成されるフィールドについて事前に知らなくても使用できますので、ユーザや組織ごとのログインの表示に利用できます。次のようなクエリを実行するとします。
_sourceCategory=service
| parse "Successful login for user '*', organization: '*'" as user, org_id
| timeslice 1d
| count _timeslice, user
| transpose row _timeslice column user
次のような積み上げグラフが表示されます。
Web サーバのステータス コードの表示
Apache Web サーバのステータス コードのクエリに戻りましょう。status_code は事前に parse されているフィールドです。
_sourceCategory=Apache/Access
| timeslice 1m
| count by _timeslice, status_code
| transpose row _timeslice column status_code
結果はまず、指定した形式で [Aggregates (集計)] タブに返されます。
次に、[Column (縦棒)] グラフのボタンを選択し、[Change Properties (プロパティの変更)] の下にある [Stacking (積み上げ)] の設定を [Normal (標準)] に変更して、積み上げ縦棒グラフを作成します。
null フィールドの処理については isNull operator を参照してください。
結果の順序変更
前の例に続けて、変数名を指定することで結果を変更できます。詳細については「構文」を参照してください。結果を順序付けるには、transpose オペレーションで返される変数名を知っている必要があります。この例では、200、400、および 500 のステータス コードが返されますので、変数名を次のように指定することで結果の順序を変更できます。
_sourceCategory=Apache/Access
| timeslice 1m
| count by _timeslice, status_code
| transpose row _timeslice column status_code as %"200", %"400", %"500"