1日半…
仕事で某サービスのRFM表を作ってたんだけど、勤務時間内に終わらない終わらない。
一人あたりの累積購買回数(Frequency:累計購買回数)、初回購買日と最新購買日(Recency:最新購買日)、累積購買金額(Monetary:累計購買金額)をSQL Server上で集計して、そっから先はAccessのPartition 関数で分布を取るための集計をしようとしてたのね。
初回購買日と最新購買日は残存期間(リピート期間)を出すのに使う。
⇒ RFM分析 - @IT情報マネジメント用語事典
⇒ Partition 関数 - Access - Microsoft Office Online
AccessのPartition 関数は任意の範囲と区切り単位を指定すれば、その範囲に該当レコードが何件あるのかを一発で出力できるので便利なんだけど、元データが1,000万行以上あるのでとにかく重い。サーバ側でそこまでの集計ができればいいんだけど、SELECT文でPartition 関数に相当するやり方が分からん…。
範囲指定をCase句でぜんぶ手書きなんてヤだし。
なもんでAccessに持ってきてクロス集計してたんだけど会社で朝イチからクエリを動かしても10時間経っても終わらない始末。どうにも作らなきゃならんので(ルール的にNGだけど)ファイルをうちに持ってきてX60に突っ込んで金曜の夜から実行してた。
んでさっき起きてきて見たら終わってた。1日半かけてやっと終わったよ(まだもう1個作るけど)。
1,000万行以上ある元レコードも集計してしまえば24行。エライひとは24行の結果しか見ないからね。しかもそのデータの意味をこっちが説明してあげるわけだから。
やっぱしデータ分析とかデータベースマーケティングなんて名乗るんなら自分トコのデータ構造を理解していて、どうすれば欲しい情報が得られるのかを分かるべきだね。
データ構造や出し方が分かってればほかのスタッフに的確な指示が出せるので、エライひとは実際手を動かさなくてもいいけど。
世間様で言われるKPIや指標の概念を持ち込んで、「こういうデータがあれば○○できる」「○○なデータが必要です」なんてことは誰でも言える。でもそれって(参考にはするけど)無いモノねだりだし、内部構造を踏まえての提言じゃないと机上の空論だと思う。もちろん、構造的にダメな部分を分かった上で改善していくのは必要だけどね。
だからおいらは自分で手を動かす。分からなきゃER図もテーブル定義書も見る。そして算出根拠が分かってるデータを見る。誰かが作った数字は算出根拠が分からなきゃ信用しない。
しかし1億行以上のレコードがあるサーバ上で「一人当たり」なんてGroup byをするだけでも4時間くらいかかったし。しかも同じパターンを条件変えて6個くらい作る…。もっとスマートなやり方はないもんかねぇ。。。
« 風邪ひいた | ホーム | 天城湯ヶ島 あせび野(チェックイン) »
コメント (4)
その後体調はいかがでしょう?
えっっっと・・・
この本文で説明されている内容はほとんど解りませんが、
(もちろん、リンク先の説明は読んでません!)
疑問が一つ。
いったい、何屋さんですか?( ̄Д ̄;;
投稿者: ぐろこ | 2008年6月10日 12:54
日時: 2008年6月10日 12:54
ぐろこさん
おかげさまで今日は何とか出勤したですよ。まだ咳きは出るけどね…。
エントリーの内容、いま見返してみるとかなり文字が多いね(汗
よく読んだもんですわw
えと、いまの仕事って、かいつまんでいうと「お客さま係」かな。
データに基づいてお客さんに最適なサービスを考えて提案して、アクションの結果をデータを出して検証して、また改善策を考えて・・・って感じ。
まあほかにも色々やってるけどデータベースマーケティングなんて言い方をするね。
これで説明になってるかなぁ。
お、ところでネット環境は整備できたんですか?
投稿者: takeshi | 2008年6月11日 00:02
日時: 2008年6月11日 00:02
インターネット・・・
年内くらいにはなんとかしたいなぁ・・・
という程度です(mー_ー)m.。o○
投稿者: ぐろこ | 2008年6月11日 12:26
日時: 2008年6月11日 12:26
き、気が長いな・・・。
投稿者: takeshi | 2008年6月11日 22:55
日時: 2008年6月11日 22:55