目次
この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
今回はGoogleデータポータルの対象期間における1日あたりの平均トランザクション数を計算する方法についてご紹介いたします。DATE_DIFF関数やTODATE関数といったヘルプページだけではわかりにくい関数の実用TIPSとしてご活用いただければ幸いです。
この記事でまとめられていること
こんにちは。株式会社アピリッツでアナリストをしているssekiです。
Googleデータポータルには数多くの便利な関数があるのですが、使い方がなかなかわかりにくいのが正直なところ。
僕もヘルプページをにらみながら日々勉強しています。
今回ご紹介するのは、日付に関する関数です。実例を交えながらご紹介いたします。
例えば、こんな事例ってよくありませんか?
Aさん「このECサイトの目標は日平均○○個売上を上げることなんだけど、これってデータポータルで定点観測できないかな?」
僕「えっ、それって1日あたりのトランザクション数を計測するってことですよね。うまいこと計測日数を計算できればいけそうだけど・・・。ちょっと調べてみます。」
・・・というわけで、日数を計算する方法を探してみた僕ですが、なんとか解決できたのでご紹介いたします。
データポータルで計測日数を計算するにはDATE_DIFF関数とTODATE関数を使おう
ある程度調べていくと、Googleデータポータルにおいて日付がどのように扱われているか、次のようなことがわかりました。
- 日付はYYYYMMDD形式で指定する必要がある。
- TODATE関数を用いることで、日付データを他の形式に変換できる。
- DATE_DIFF関数を用いることで、2つの日付間を計算できる。
ここまでわかってくると、後はDATE_DIFF関数とTODATE関数を組み合わせれば何とかなりそうですね。
早速、それぞれの関数の使い方を調べてみることにしました。
DATE_DIFF関数の使い方
まずは、2つの日付間を計算するための関数、DATE_DIFF関数の使い方からまとめていきます。
Googleデータポータルのヘルプには、このように記載されています。
説明:XとYの日数の違いを返します(X-Y)。
構文:DATE_DIFF(X,Y)
かなりシンプルですね。しかし、ここで四苦八苦しました。
例えば、次のように仮の日付を当てはめてみてもエラーが出てしまいます。
DATE_DIFF('20171011','20171010')
また、シンプルに「日付」のディメンションを入れても、当たり前ながらダメでした。
DATE_DIFF(日付,日付)
どうすれば計算できるの???と小一時間悩み続けていたのですが・・・、
「データポータルで使える日付の形式が決まっているなら、もしかして日付の出力形式をDATE_DIFF関数が使えるようにしないといけないんじゃないか?」とやっと気づいたのでした。
つまり、TODATE関数の出番ってことですね!
TODATE関数の使い方
というわけで、日付データの形式を他の形式に換える関数、TODATE関数についてまとめていきます。
またもや、ヘルプページはシンプルにこう書いてありました。
説明:UTCの指定された形式で日時の項目を返します。
構文:TODATE(X,入力形式,出力形式)
UTCというのは、世界各地の標準時を決めるときの基準「世界標準時」のことです。
パソコンのタイムゾーン設定でよく見かけますね。
TODATE関数のXの部分は、指標やディメンションなどのデータを入れます。
そのデータの入力形式を次に指定し、変換したい形式をその次の出力形式に当てはめるようです。
ここで使える入力形式と出力形式には制限があり、次の文字列が使用できます。
【入力形式】
・「‘BASIC’」 YYYY/MM/DD-HH:MM:SS
・「‘DEFAULT_DASH’」 YYYY-MM-DD[HH:MM:SS[.uuuuuu]]
・「‘DEFAULT_SLASH’」 rmat YYYY/MM/DD [HH:MM:SS[.uuuuuu]]
・「‘DEFAULT_DECIMAL’」 YYYYMMDD [HH:MM:SS[.uuuuuu]]
・「‘RFC_1123’」 表示例:Sat, 24 May 2008 20:09:47 GMT
・「‘RFC_3339’」 表示例: 2008-05-24T20:09:47Z
・「‘SECONDS’」 エポックからの秒数
・「‘MILLIS’」 エポックからのミリ秒数
・「‘MICROS’」 エポックからのマイクロ秒数
・「‘NANOS’」 エポックからのナノ秒数
・「‘JULIAN_DATE’」 エポックからの日数
・「‘DECIMAL_DATE’」 ’DEFAULT_DECIMAL’ と同じ
・文字列として有効な strptime 形式【出力形式】
・“%Y” 年
・“%m” 月
・“%d” 日
・“%W” 週番号
・“%w” 曜日
・“%H” 時
・“%M” 分
詳細についてはヘルプページをご参照ください。
ひとまず、この形式に合わせて日付をコントロールすればよさそうだということがわかりました。
対象期間の始点・終点間の日数を計算する方法
実際に、DATE_DIFF関数に合う形式で日付を修正してみましょう。
指標「日付」、入力形式「’DEFAULT_DASH’」、出力形式「’%Y-%m-%d’」で計算してみるとDATE_DIFFに合う形になるようです。
下のコードを計算フィールドに入力することで、対象期間の始点・終点間の日数を計算できます。
DATE_DIFF(TODATE(日付,'DEFAULT_DASH','%Y-%m-%d'),TODATE(日付,'DEFAULT_DASH','%Y-%m-%d'))
ここで、やってみて不思議だったのですが、DATE_DIFFのXとYの位置に同じTODATE構文を入れるだけで自動的に始点と終点を見分けてくれていました。
おそらく、Googleアナリティクスデータがそのような形式になっているのでしょう。
とにもかくにも、目的の第一段階であった対象期間の日数をカウントすることができました。
あとひといきです。
1日あたりのトランザクション数を計算する方法
次に、1日あたりのトランザクション数を計算してみましょう。
指標「トランザクション数」を先ほど作ったDATE_DIFF構文で割るだけです。
トランザクション数/DATE_DIFF(TODATE(日付,'DEFAULT_DASH','%Y-%m-%d'),TODATE(日付,'DEFAULT_DASH','%Y-%m-%d'))
簡単ですね。
式が複雑になってわかりづらいという方は、さきほどのDATE_DIFF構文を別の名前で保存して使ってもよさそうです。
まとめ:この機能はどんな人におすすめか
というわけで、無事に1日あたりのトランザクション数を計算することができました。
今回の日数計算の関数利用は様々な利用が考えられそうですね。
例えば、
・1日あたりのユーザー数を調べる
・リニューアル日(特定の日)から何日経っているかを調べる
など、少し上げただけでも、多くのマーケッターにとって実用的な機能な気がします。
ぜひ、記事を参考にいろいろ試してみてください!