次の方法で共有


new_activity_metrics プラグイン

適用対象: ✅Microsoft FabricAzure データ エクスプローラー

New Users のコーホートに対して有用なアクティビティ メトリック (個別カウント値、新しい値の個別カウント、リテンション率、チャーン レート) を計算します。 New Users (時間枠に最初に表示されたすべてのユーザー) の各コーホートは、以前のすべてのコーホートと比較されます。 比較では、以前のすべての時間枠が考慮されます。 たとえば、T2 から T3 のレコードの場合、ユーザーの個別カウントは、T1 と T2 の両方に表示されなかった T3 のすべてのユーザーになります。 このプラグインは、evaluate 演算子を使用して呼び出されます。

構文

TabularExpression | evaluate new_activity_metrics(IdColumn, TimelineColumn, Start, End, Window [, Cohort] [, dim1, dim2, ...] [, Lookback] )

構文規則について詳しく知る。

パラメーター

件名 タイプ Required 説明
TabularExpression string ✔️ アクティビティ メトリックを計算する表形式の式。
IdColumn string ✔️ ユーザー アクティビティを表す ID 値を持つ列の名前。
TimelineColumn string ✔️ タイムラインを表す列の名前。
Start スカラー型 ✔️ 分析開始期間の値。
End スカラー型 ✔️ 分析の終了期間の値。
ウィンドウ スカラー型 ✔️ 分析ウィンドウ期間の値。 数値、datetime、timespan 値、または weekmonth 、または yearのいずれかである文字列を指定できます。その場合、すべての期間はそれに応じて startofweek/startofmonth/startofyear になります。 startofweekを使用する場合は、開始時刻が日曜日であることを確認します。それ以外の場合、最初のコーホートは空になります (startofweek 以降は日曜日と見なされます)。
グループ スカラー型 特定のコーホートを示します。 指定しない場合、分析の時間枠に対応するすべてのコーホートが計算され、返されます。
dim1, dim2, ... dynamic アクティビティ メトリックの計算をスライスするディメンション列の配列。
ルックバック string "ルックバック" 期間に属する ID のセットを含む表形式の式。

返品

'from' と 'to' のタイムライン期間の組み合わせごと、および既存の列 (ディメンション) の組み合わせごとに、以下を含むテーブルを返します。

  • 個別カウント値
  • 新しい値の個別カウント
  • リテンション率
  • チャーン レート

出力テーブル スキーマは次のとおりです。

from_TimelineColumn to_TimelineColumn dcount_new_values dcount_retained_values dcount_churn_values retention_rate churn_rate dim1 .. dim_n
型: TimelineColumn 現在 同じ long long 倍精度浮動小数点 double 倍精度浮動小数点 .. .. ..
  • from_TimelineColumn - 新しいユーザーのコーホート。 このレコードのメトリックは、この期間に最初に表示されたすべてのユーザーを示しています。 最初の表示に対する決定では、分析期間内の以前のすべての期間が考慮されます。
  • to_TimelineColumn - 比較対象の期間。
  • dcount_new_values - from_TimelineColumn 以前のすべての期間に表示されていない to_TimelineColumn の個別ユーザーの数。
  • dcount_retained_values - from_TimelineColumn に最初に表示されたすべての新規ユーザーのうち、to_TimelineCoumn に表示された個別ユーザーの数。
  • dcount_churn_values - from_TimelineColumn に最初に表示されたすべての新規ユーザーのうち、to_TimelineCoumn に表示されていない個別ユーザーの数。
  • retention_rate - コーホート外の dcount_retained_values の割合 (最初に from_TimelineColumn に表示されたユーザー)。
  • churn_rate - コーホート外の dcount_churn_values の割合 (最初に from_TimelineColumn に表示されたユーザー)。

Note

Retention RateChurn Rate の定義については、activity_metrics プラグインのドキュメントの「メモ」セクションを参照してください。

次のサンプル データセットは、どのユーザーがどの日に表示されたかを示しています。 テーブルは、次のようにソースの Users テーブルに基づいて生成されました。

Users | summarize tostring(make_set(user)) by bin(Timestamp, 1d) | order by Timestamp asc;

出力

タイムスタンプ set_user
2019-11-01 00:00:00.0000000 [0,2,3,4]
2019-11-02 00:00:00.0000000 [0,1,3,4,5]
2019-11-03 00:00:00.0000000 [0,2,4,5]
2019-11-04 00:00:00.0000000 [0,1,2,3]
2019-11-05 00:00:00.0000000 [0,1,2,3,4]

元のテーブルのプラグインの出力は次のとおりです。

let StartDate = datetime(2019-11-01 00:00:00);
let EndDate = datetime(2019-11-07 00:00:00);
Users 
| evaluate new_activity_metrics(user, Timestamp, StartDate, EndDate-1tick, 1d) 
| where from_Timestamp < datetime(2019-11-03 00:00:00.0000000)

出力

R from_Timestamp to_Timestamp dcount_new_values dcount_retained_values dcount_churn_values retention_rate churn_rate
1 2019-11-01 00:00:00.0000000 2019-11-01 00:00:00.0000000 4 4 0 1 0
2 2019-11-01 00:00:00.0000000 2019-11-02 00:00:00.0000000 2 3 1 0.75 0.25
3 2019-11-01 00:00:00.0000000 2019-11-03 00:00:00.0000000 1 3 1 0.75 0.25
4 2019-11-01 00:00:00.0000000 2019-11-04 00:00:00.0000000 1 3 1 0.75 0.25
5 2019-11-01 00:00:00.0000000 2019-11-05 00:00:00.0000000 1 4 0 1 0
6 2019-11-01 00:00:00.0000000 2019-11-06 00:00:00.0000000 0 0 4 0 1
7 2019-11-02 00:00:00.0000000 2019-11-02 00:00:00.0000000 2 2 0 1 0
8 2019-11-02 00:00:00.0000000 2019-11-03 00:00:00.0000000 0 1 1 0.5 0.5
9 2019-11-02 00:00:00.0000000 2019-11-04 00:00:00.0000000 0 1 1 0.5 0.5
10 2019-11-02 00:00:00.0000000 2019-11-05 00:00:00.0000000 0 1 1 0.5 0.5
11 2019-11-02 00:00:00.0000000 2019-11-06 00:00:00.0000000 0 0 2 0 1

出力のいくつかのレコードの分析を次に示します。

  • レコード R=3from_TimelineColumn = 2019-11-01to_TimelineColumn = 2019-11-03:

    • このレコードで考慮されるユーザーはすべて、11/1 に表示される新しいユーザーです。 これは最初の期間であるため、これらはそのビン内のすべてのユーザーです - [0,2,3,4]
    • dcount_new_values – 11/1 に表示されていない 11/3 のユーザーの数。 これには、1 人のユーザー (5) が含まれます。
    • dcount_retained_values – 11/1 のすべての新規ユーザーのうち、11/3 まで保持されたユーザー数は何人ですか? 3 つの値 ([0,2,4]) がありますが、count_churn_values は 1 (ユーザー 3) です。
    • retention_rate = 0.75 – 11/1 で最初に表示された 4 人の新規ユーザーのうち 3 人の保持されたユーザー。
  • レコード R=9from_TimelineColumn = 2019-11-02to_TimelineColumn = 2019-11-04:

    • このレコードは、11/2 に最初に表示された新規ユーザー (ユーザー 15) に焦点を当てています。
    • dcount_new_values – すべての期間 T0 .. from_Timestamp を通じて表示されていない 11/4 のユーザーの数。 つまり、11/4 に表示されたが、11/1 または 11/2 のどちらにも表示されていないユーザー (そのようなユーザーは存在しません) です。
    • dcount_retained_values – 11/2 ([1,5]) のすべての新規ユーザーのうち、11/4 まで保持されたユーザー数は何人ですか? そのようなユーザーは 1 人 ([1]) で、while count_churn_values は 1 (ユーザー 5) です。
    • retention_rate は 0.5 - 11/2 の 2 人の新規ユーザーのうち 11/4 に保持された 1 人のユーザー。

週単位のリテンション率とチャーン レート (1 週間)

次のクエリでは、New Users のコーホート (最初の週に表示されたユーザー) を対象に、前週比のリテンション率とチャーン レートが計算されます。

// Generate random data of user activities
let _start = datetime(2017-05-01);
let _end = datetime(2017-05-31);
range Day from _start to _end step 1d
| extend d = tolong((Day - _start) / 1d)
| extend r = rand() + 1
| extend _users=range(tolong(d * 50 * r), tolong(d * 50 * r + 200 * r - 1), 1) 
| mv-expand id=_users to typeof(long) limit 1000000
// Take only the first week cohort (last parameter)
| evaluate new_activity_metrics(['id'], Day, _start, _end, 7d, _start)
| project from_Day, to_Day, retention_rate, churn_rate

出力

from_Day to_Day retention_rate churn_rate
2017-05-01 00:00:00.0000000 2017-05-01 00:00:00.0000000 1 0
2017-05-01 00:00:00.0000000 2017-05-08 00:00:00.0000000 0.544632768361582 0.455367231638418
2017-05-01 00:00:00.0000000 2017-05-15 00:00:00.0000000 0.031638418079096 0.968361581920904
2017-05-01 00:00:00.0000000 2017-05-22 00:00:00.0000000 0 1
2017-05-01 00:00:00.0000000 2017-05-29 00:00:00.0000000 0 1

週単位のリテンション率とチャーン率 (完全なマトリックス)

次のクエリでは、New Users のコーホートの前週比のリテンション率とチャーン レートが計算されます。 前の例で 1 週間の統計を計算した場合、次のクエリでは、from と to の組み合わせごとに NxN テーブルが生成されます。

// Generate random data of user activities
let _start = datetime(2017-05-01);
let _end = datetime(2017-05-31);
range Day from _start to _end step 1d
| extend d = tolong((Day - _start) / 1d)
| extend r = rand() + 1
| extend _users=range(tolong(d * 50 * r), tolong(d * 50 * r + 200 * r - 1), 1) 
| mv-expand id=_users to typeof(long) limit 1000000
// Last parameter is omitted - 
| evaluate new_activity_metrics(['id'], Day, _start, _end, 7d)
| project from_Day, to_Day, retention_rate, churn_rate

出力

from_Day to_Day retention_rate churn_rate
2017-05-01 00:00:00.0000000 2017-05-01 00:00:00.0000000 1 0
2017-05-01 00:00:00.0000000 2017-05-08 00:00:00.0000000 0.190397350993377 0.809602649006622
2017-05-01 00:00:00.0000000 2017-05-15 00:00:00.0000000 0 1
2017-05-01 00:00:00.0000000 2017-05-22 00:00:00.0000000 0 1
2017-05-01 00:00:00.0000000 2017-05-29 00:00:00.0000000 0 1
2017-05-08 00:00:00.0000000 2017-05-08 00:00:00.0000000 1 0
2017-05-08 00:00:00.0000000 2017-05-15 00:00:00.0000000 0.405263157894737 0.594736842105263
2017-05-08 00:00:00.0000000 2017-05-22 00:00:00.0000000 0.227631578947368 0.772368421052632
2017-05-08 00:00:00.0000000 2017-05-29 00:00:00.0000000 0 1
2017-05-15 00:00:00.0000000 2017-05-15 00:00:00.0000000 1 0
2017-05-15 00:00:00.0000000 2017-05-22 00:00:00.0000000 0.785488958990536 0.214511041009464
2017-05-15 00:00:00.0000000 2017-05-29 00:00:00.0000000 0.237644584647739 0.762355415352261
2017-05-22 00:00:00.0000000 2017-05-22 00:00:00.0000000 1 0
2017-05-22 00:00:00.0000000 2017-05-29 00:00:00.0000000 0.621835443037975 0.378164556962025
2017-05-29 00:00:00.0000000 2017-05-29 00:00:00.0000000 1 0

週単位のリテンション率とルックバック期間

次のクエリでは、lookback 期間を考慮した場合の New Users のコーホートのリテンション率を計算します。New Users のコーホートを定義するために使用される ID のセットを含む表形式のクエリです (このセット内の表示されないすべての ID は New Users です)。 このクエリでは、分析期間中の New Users のリテンション動作が調べられます。

// Generate random data of user activities
let _lookback = datetime(2017-02-01);
let _start = datetime(2017-05-01);
let _end = datetime(2017-05-31);
let _data = range Day from _lookback to _end step 1d
    | extend d = tolong((Day - _lookback) / 1d)
    | extend r = rand() + 1
    | extend _users=range(tolong(d * 50 * r), tolong(d * 50 * r + 200 * r - 1), 1) 
    | mv-expand id=_users to typeof(long) limit 1000000;
//
let lookback_data = _data | where Day < _start | project Day, id;
_data
| evaluate new_activity_metrics(id, Day, _start, _end, 7d, _start, lookback_data)
| project from_Day, to_Day, retention_rate

出力

from_Day to_Day retention_rate
2017-05-01 00:00:00.0000000 2017-05-01 00:00:00.0000000 1
2017-05-01 00:00:00.0000000 2017-05-08 00:00:00.0000000 0.404081632653061
2017-05-01 00:00:00.0000000 2017-05-15 00:00:00.0000000 0.257142857142857
2017-05-01 00:00:00.0000000 2017-05-22 00:00:00.0000000 0.296326530612245
2017-05-01 00:00:00.0000000 2017-05-29 00:00:00.0000000 0.0587755102040816