[MUSASHI-users 461] Re: テキストファイルと XML テーブルで xtcount の結果が異なる

Back to archive index

nakahara nakap****@yahoo*****
2005年 1月 2日 (日) 02:31:47 JST


海老澤様

中原です。

明けましておめでとうございます。

説明が悪くて申し訳ないです。

>ということは、2、3、4は同じ結果(厳密なユニーク集計
>結果ではない)ということでしょうか?

はい、2,3,4は同じ結果になると思います。

ただし、厳密なユニーク集計結果ではないかというのは
一概には言えないと思います。
入力ファイルのキー項目で指定される項目が、並び換わって
いるのでしたら、求めているユニーク結果になるだろうし、
状況によっては入力ファイルのレコード順で処理したい場合も
あるのかもしれません。

例えば、以下のような入力ファイルで実際に試されれば
よくわかるかもしれません。

ID
a
b
b
a
a
b

2. xtcount -q -kID -aNum -i file1.xt -o file2.xt
3. xtcount -t -k1 -i file1.txt -o file2.txt
4. xtcount -q -t -k1 -i file1.txt -o file2.txt

2,3,4の結果は以下のようになります。
ID Num
a 1
b 2
a 2
b 1

同じaという値でも、間にbを挟むことにより2回目に
出てきたaは最初のaとは別の物として扱われます。
(処理的には、ファイルの上から1行ずつ読み込み、現在行と
次の行の値(キーで指定された項目)
を比較し、同じ値なら繰り返し読み込みを続け、
違う値なら結果を出力するという処理を
行っているからです。)
ですから、キー項目の並び換えをしていないと
上記のような結果になります。

1.xtcount -kID -aNum -i file1.xt -o file2.xt

1.のようにxmlTable形式で[-q]を指定しなければ、
キーで指定した項目をMUSASHIが自動で並びかえてくれます
ので、まず以下のように実際はなります(ユーザーが意識する
ことはないですが)。

ID
a
a
a
b
b
b

その後カウント処理が行われますので、
ID Num
a 3
b 3

という結果になります。

ほんと説明がわるくて申し訳ないですが、
理解していただければ幸いです。

--- Sumio Ebisawa <ebisa****@aa*****> さんからのメッ
セージ:
> 海老澤です。新年明けましておめでとうございます。
> 
> 
> 中原様、ご説明ありがとうございます。理解が悪くて申し訳
ない
> のですが・・・、
> 
> >
> 2.の場合は、-kIDが指定されているのですが、-qも指定され
て
> >
> いるため入力ファイルがID順に並んでいるか、並んでないか
に
> > 関わらず、入力ファイルのレコード順に処理されます。
> 
> > テキストの場合は、-kが指定されていても、
> >
> 自動では並び換えてくれませんので、レコード順に処理され
ま
> > す。
> >
> ですからテキストの場合ですと3、4は同じ結果になります
> 
> ということは、2、3、4は同じ結果(厳密なユニーク集計結
果では
> ない)ということでしょうか?
> 
> 
> ----- Original Message ----- 
> From: "nakahara" <nakap****@yahoo*****>
> To: "MUSASHI の利用者"
> <musas****@lists*****>
> Sent: Tuesday, December 28, 2004 10:02 PM
> Subject: [MUSASHI-users 454] Re: テキストファイルと
> XML テーブルで xtcount
> の結果が異なる
> 
> 
> > 中原です。
> >
> > >
> Unixのuniqコマンドと同じようですね。ご指摘の通り、ソー
> > トしてから
> > >
> 集計したら正しく動作しました。これは「-q」のオプション
> > と同じ、と
> > > いう理解でよろしいのでしょうか?
> >
> >
> -qは、-kが指定されていても、入力データのレコード順で処
理
> >
> しなさいというオプションですので、上記は違う意味だと思
い
> > ます。
> >
> >
> テキスト形式のデータを処理する場合は、-qの有無に関わら
ず
> >
> キー項目が自動で並び換えされませんので、-qはxmlTableの
と
> > きに
> > 意味のあるオプションだと思います。
> >
> > わかりにくいと思いますので、以下に例を示します。
> >
> > 入力データがxmlTableの場合
> > 1. xtcount -kID -aNum -i file1.xt -o file2.xt
> > 2. xtcount -q -kID -aNum -i file1.xt -o file2.xt
> >
> >
> 1.の場合は-kIDが指定されていますので、入力ファイルがID
順
> >
> に並んでいなければ、自動で並び換えてから、カウント処理
が
> > 行われます。
> >
> 2.の場合は、-kIDが指定されているのですが、-qも指定され
て
> >
> いるため入力ファイルがID順に並んでいるか、並んでないか
に
> > 関わらず、入力ファイルのレコード順に処理されます。
> >
> > 入力データがテキストの場合
> > 3. xtcount -t -k1 -i file1.txt -o file2.txt
> > 4. xtcount -q -t -k1 -i file1.txt -o file2.txt
> >
> > テキストの場合は、-kが指定されていても、
> >
> 自動では並び換えてくれませんので、レコード順に処理され
ま
> > す。
> >
> ですからテキストの場合ですと3、4は同じ結果になります
> >
> > --- Sumio Ebisawa
> <ebisa****@aa*****>さんからのメッセ
> > ージ:
> > > 海老澤です。お世話になります。
> > >
> > >
> > > 連絡が遅れてしまい、申し訳ございません。
> > >
> > > > テキスト形式で実行するとMUSASHIは
> > > > 自動でソートしてくれませんので、
> > >
> > >
> Unixのuniqコマンドと同じようですね。ご指摘の通り、ソー
> > トしてから
> > >
> 集計したら正しく動作しました。これは「-q」のオプション
> > と同じ、と
> > > いう理解でよろしいのでしょうか?
> > >
> > >
> > > ----- Original Message ----- 
> > > From: "nakahara" <nakap****@yahoo*****>
> > > To: <musas****@lists*****>
> > > Sent: Wednesday, December 22, 2004 1:44 AM
> > > Subject: [MUSASHI-users 447] Re:
> テキストファイルと
> > > XML テーブルで xtcount
> > > の結果が異なる
> > >
> > >
> > > > 中原です。
> > > >
> > > > 以下で問題となるのはソートだと思います。
> > > > テキスト形式で実行するとMUSASHIは
> > > > 自動でソートしてくれませんので、
> > > >
> xtcountを使用する前にキー項目のソートが必要だと
> > > > 思います。
> > > >
> > > >
> > >
> xtcountの前に以下のソートを付け加えて実行して見てくだ
> > さ
> > > > い。
> > > >
> > > > xtsort -t -k1,2 |
> > > >
> > > > これで問題なく動作すると思います。
> > > >
> > > > --- Sumio Ebisawa <ebisa****@aa*****>
> > > からのメッセー
> > > > ジ:
> > > > > 海老澤です。お世話になります。
> > > > >
> > > > >
> > > > >
> > >
> musashiを利用したアクセスログ解析システムを構築中です
> > > > 。ログ
> > > > > ファイルを「会員ID URL 時間
> > > > > 参照元」と並べ替えたログファイルを
> > > > >
> > >
> 会員IDとURLの組み合わせで集計したいと考えています。
> > > > >
> > > > > つまり
> > > > >
> > > > > 001 /a.html 2月1日 www.yahoo.co.jp
> > > > > 001 /b.html 2月1日 www.yahoo.co.jp
> > > > > 001 /a.html 2月1日 www.yahoo.co.jp
> > > > > 002 /a.html 2月1日 www.yahoo.co.jp
> > > > > 003 /a.html 2月1日 www.yahoo.co.jp
> > > > >
> > > > > というデータを
> > > > >
> > > > > 001 /a.html 1
> > > > > 001 /b.html 2
> > > > > 002 /a.html 1
> > > > > 003 /a.html 1
> > > > >
> > > > > とまとめたいわけです。
> > > > >
> > > > > txt2xt -aID,URL,TIME,REF -l test -i
> > > > > 【ログファイル】| xtcut -fID,URL |
> > > > > xtcount -kID,SI -a PV -o 【出力結果】
> > > > >
> > > > >
> > >
> で問題なく処理できたのですが、これをXMLテーブルを使用
> > > > しない形
> > > > >
> > > > > xtcut -f1,2-i 【ログファイル】| xtcount
> -k1,2 -o
> > > > > 【出力結果】
> > > > >
> > > > >
> > >
> で実行すると、同じ会員IDとURLの組み合わせがマージされ
> > > > たり
> > > > > されなかったり、という現象が発生しています。
> > > > >
> > > > >
> > >
> 検証用に少ないデータで実行すると問題ないのですが、100
> > > > 万行くらい
> > > > >
> > >
> かけると誤差(最終的に足し合わせれば数字は合うのですが
> > > > )が発生
> > > > >
> > >
> します。なにか、私の設定で足りないところがあるのでしょ
> > > > うか?
> > > > >
> > > > >
> > > > >
> > > > >
> 
=== message truncated ==



MUSASHI-users メーリングリストの案内
Back to archive index