はじめて投稿いたします。
User IDがサイトにアクセスするごとにタイムスタンプを付与しています。
そのタイムスタンプをもとに、様々なディメンションを作成したいと思っています。
タイムスタンプは「2016/10/01 11:11:11」となっていますので、
はじめてアクセスした日
{FIXED[UserID]:MIN(DATETRUNC('day',[TimeStamp]))}
最後にアクセスした日
{FIXED[UserID]:Max(DATETRUNC('day',[TimeStamp]))}
とすることで、はじめてアクセスした日と最後にアクセスした日は作成できたのですが、
3回目にアクセスした日
といったものを作成したいのですが、こちらどのような方法で可能となるのでしょうか。
お手数をおかけいたしますが、お教えいただけますと助かります。
よろしくお願いします。
2種類のアプローチがあります。
1.LODを使う
例示されている式のように、LODとifを組み合わせて、3番目の日付を算出します。
[2nd Date]
{fixed [Customer]:min(if [Date]> [1st Date] then [Date] end)}
[3rd Date]
{fixed [Customer]:min(if [Date]> [2nd Date] then [Date] end)}
Pros:LODなので、値が変化しない=表示させるときや後で計算させるときにに扱いやすい
表示Format の変更や、条件付の計算式への展開がしやすい
Cons: LODを使うと、データが多量になったとき、パフォーマンスが落ちる
いちいち式が必要なので、「100番目」とか言われると、式を作るのは気が遠くなる
2. Parameter と Indexを使う
[Rank filter]
if [First / Last]="First"
then first()=-([Parameter N'th from First/Last]-1)
elseif [First / Last]="Last"
then last()=[Parameter N'th from First/Last]-1
end
Pros:非常にフレキシブル = 何番目でも抽出可能
後ろから数える/前から数えるの変更も容易
Cons:Indexなので、Dimensionが増えてくると、扱いにくい。
Indexなので、ややこしい計算が必要になると、扱いにくい。
村上