0

すべての User-Agent ID 内のデバイス数も計算するように SQL ステートメントを設計するにはどうすればよいですか?

私は MS Log Parser Studio (LOGPARSER) で作業し、さまざまなクエリ Exchange ログ (IIS W3C LOG) のプログラミングに取り組んで、モバイル デバイスの統計をコンパイルしています。

これはクエリです:

SELECT TO_STRING(To_timestamp(date, time), 'MM-dd-yyyy') as Day, cs(user-agent) as
UserAgent /* Count(MyDeviceId as DeviceId) as NrOfSameDevice 
USING
EXTRACT_VALUE(cs-uri-query,'DeviceId') as MyDeviceId */
FROM '[LOGFILEPATH]' 
WHERE cs-uri-stem LIKE '%Microsoft-Server-ActiveSync%'
GROUP BY Day, UserAgent
ORDER BY Day

このクエリの結果は次のとおりです。

ここに画像の説明を入力

4

1 に答える 1

0

Day と UserAgentのペアごとに個別のデバイスの数を計算する必要があると想定しています。

これは通常、COUNT(DISTINCT) またはネストされたクエリで行われますが、LogParser はどちらもサポートしていないため (COUNT(DISTINCT) は GROUP BY ではサポートされていません)、クエリを 2 つに分割する必要があります。

  1. 最初のクエリは、Day、UserAgent、および DeviceId の個別の組み合わせを選択します。

    SELECT DISTINCT TO_STRING(To_timestamp(date, time), 'MM-dd-yyyy') as Day, cs(user-agent) as UserAgent, EXTRACT_VALUE(cs-uri-query,'DeviceId') as MyDeviceId INTO TmpOutput.csv FROM '[ログファイルパス]'

  2. 2 番目のクエリは、最初の 2 つのフィールドでグループ化された最初のクエリの結果を解析します。

    SELECT Day, UserAgent, COUNT(*) FROM TmpOutput.csv GROUP BY Day, UserAgent ORDER BY Day

最初のコマンドがヘッダーを TmpOutput.csv にも出力するように構成されていることを確認してください。

于 2012-12-04T16:58:43.837 に答える