以下のqueryを実行すると、取ってきてほしい情報(UIDとwifi)がかけてしまいます。
原因はおそらくですが、sourceをいくつかORで繋いで指定しており、その中の一つのsource(source=device)からしか情報をとってきてないように見受けられます。
このsource=deviceは日次でデータを取得しており、その他は週次で取得しているためでしょうか。
かけている情報をだすだしかたを教えて下さい。
index=* sourcetype=d_log (source=*i_device OR source=*device OR source=*i_device_n OR source=*i_device_r)
| rex field=id "(?
| stats latest(c_id) AS CID latest(id) as ID latest(serial) AS Serial latest(type) AS Type latest(model) AS Model latest(version) AS Version latest(Carrier) AS Carrier latest(pp) AS PP latest(u_id) AS UID latest(wifi) AS wifi latest(enrolled_date) AS enrolled_date latest(lastmodified) as lastmodified by number
| eval Enrolled=strftime(enrolled_date,"%Y/%m/%d %H:%M")
| eval Lastupdated=strftime(lastmodified,"%Y/%m/%d %H:%M") | rename phone AS MSN
| table CID ID MSN Serial Type Model Version Carrier PP UID wifi Enrolled Lastupdated | transpose
検索文について、「|」で分解し、どの部分に問題があるか、切り分けをされてはいかがでしょうか?
1) データの選択範囲が正しいか?
sourcetype=d_log (source=i_device OR source=device OR source=i_device_n OR source=*i_device_r)
| stats count by source
対象にしているsourceがカウントされているか、確認します。ここで対象から漏れている場合、inputs.confの設定を見直し、sourceとsourcetypeが期待通りに設定されるか、ご確認ください。
2) transpose
transposeでは引数を指定しないと、デフォルトは5となっています。transpose 10のように大きい数字を指定することで変化は見られませんか?
3) すべてのsourceにて、フィールド情報が含まれているでしょうか?fillnullの有無で件数に変化がないかを確認。
index= sourcetype=d_log (source=i_device OR source=device OR source=i_device_n OR source=*i_device_r) | rex field=id "(?<id>d+)@" | fillnull value="NULL" id c_id id serial type model version Carrier pp u_id wifi enrolled_date lastmodified number phone | stats latest(c_id) AS CID latest(id) as ID latest(serial) AS Serial latest(type) AS Type latest(model) AS Model latest(version) AS Version latest(Carrier) AS Carrier latest(pp) AS PP latest(u_id) AS UID latest(wifi) AS wifi latest(enrolled_date) AS enrolled_date latest(lastmodified) as lastmodified by number | eval Enrolled=strftime(enrolled_date,"%Y/%m/%d %H:%M") | eval Lastupdated=strftime(lastmodified,"%Y/%m/%d %H:%M") | rename phone AS MSN | table CID ID MSN Serial Type Model Version Carrier PP UID wifi Enrolled Lastupdated | transpose
fillnullコマンドを追加する事で、期待結果が得られるなら、フィールドの値が正しく抽出できていないのかもしれません。
フィールド抽出設定をご確認ください。
フィールドが抽出できないケースが想定される場合には、fillnullコマンドによる対応が必要なのかもしれません。
参考にしていただければ幸いです。
検索文について、「|」で分解し、どの部分に問題があるか、切り分けをされてはいかがでしょうか?
1) データの選択範囲が正しいか?
sourcetype=d_log (source=i_device OR source=device OR source=i_device_n OR source=*i_device_r)
| stats count by source
対象にしているsourceがカウントされているか、確認します。ここで対象から漏れている場合、inputs.confの設定を見直し、sourceとsourcetypeが期待通りに設定されるか、ご確認ください。
2) transpose
transposeでは引数を指定しないと、デフォルトは5となっています。transpose 10のように大きい数字を指定することで変化は見られませんか?
3) すべてのsourceにて、フィールド情報が含まれているでしょうか?fillnullの有無で件数に変化がないかを確認。
index= sourcetype=d_log (source=i_device OR source=device OR source=i_device_n OR source=*i_device_r) | rex field=id "(?<id>d+)@" | fillnull value="NULL" id c_id id serial type model version Carrier pp u_id wifi enrolled_date lastmodified number phone | stats latest(c_id) AS CID latest(id) as ID latest(serial) AS Serial latest(type) AS Type latest(model) AS Model latest(version) AS Version latest(Carrier) AS Carrier latest(pp) AS PP latest(u_id) AS UID latest(wifi) AS wifi latest(enrolled_date) AS enrolled_date latest(lastmodified) as lastmodified by number | eval Enrolled=strftime(enrolled_date,"%Y/%m/%d %H:%M") | eval Lastupdated=strftime(lastmodified,"%Y/%m/%d %H:%M") | rename phone AS MSN | table CID ID MSN Serial Type Model Version Carrier PP UID wifi Enrolled Lastupdated | transpose
fillnullコマンドを追加する事で、期待結果が得られるなら、フィールドの値が正しく抽出できていないのかもしれません。
フィールド抽出設定をご確認ください。
フィールドが抽出できないケースが想定される場合には、fillnullコマンドによる対応が必要なのかもしれません。
参考にしていただければ幸いです。
おそらく各sourceにはnumberフィールドがあって、numberをキーとして複数のデータを連結するようなサーチだとおもいます。
statsの中のlatest()をvalues()に変更してみてはどうでしょうか。
valuesでもいいのですが、最新の情報という意味でlatestを使用していました。でないと、結果が1つに特定できずに複数表示されてしまう可能性があるためです。