NRQLでは、ファネルを使用して一連の関連アクションを評価できます。アクションでは一般的に、ユーザーIDやセッションIDなどの識別子を通じて、関係を共有します。
重要な理由
NRQL funnel
関数では、次のような質問に回答できます: 「ステップAを完了させた人のうち、ステップBも完了させたのは何人であり、また、ステップAとステップBを完了させた人のうち、ステップCも完了させた人は何人だったでしょうか?」
たとえば、New Relicではfunnel
を使用して、これらのステップを完了させたユーザーの数を追跡できます:
- New Relicマーケティングページを訪問した。
- アカウントのサインアップを行った。
- ダッシュボードを作成した。
ファネルのクエリ構造
以下は、単純なNRQLファネルクエリの構造です:
FROM DATA_TYPE
SELECT funnel(AN_ATTRIBUTE, ACTION_A, ACTION_B)
SINCE TIMEFRAME
さらに複雑なファネルクエリの例もご覧ください。
ファネルクエリには、ファネルの属性であるfunnel
関数と、少なくとも2つのステップが必要となります:
- 最初のステップは、アンカーステップです。これは、必ず結果を100%表したものになります。
- 2番目とそれ以降のステップでは、追加アクションも完了させたユーザーの数を説明します。一般的に、この数は100%未満となります。ただし、アクション(A)を完了させるすべてのユーザーが、クエリ中の追加のアクションも完了させる場合、100%となる可能性があります。
ファネルクエリの技術的な詳細
ファネルクエリを使用する1つの方法は、New Relicのサインアップの例でのように、所定の時間枠で複数ステップの順序付けられたシークエンスが完了した率を計算するというものです。ただし、ファネルを使用して、互いに順序関係のないいくつかの異なるアクション間の重なりを計算することもできます。つまり、ステップの順序は、実行した計算には影響を与えません。
ファネルクエリでの結果の計算の方法は、データセットのサイズにより異なります:
- ファネルが256個以下のファネル属性値を扱っている場合、正確に値を計算します。
- 256個を超えるファネル属性値を扱っている場合、MinHashと呼ばれるアルゴリズムを適用して近似結果を計算し、パフォーマンスを最適化します。
つまり、大きなデータセットについては、個別のデータポイントのレベルで、「偽陽性」となる場合があります。これは、クエリ結果で提供された推定値の正確さには大きな影響を与えません。
ファネルクエリの技術的な詳細と制約条件の詳細な内容は以下にあります。
技術的詳細 | コメント |
---|---|
ステップの順序 | 完了したステップの順序は強制されず、結果に影響を与えません。 |
属性 | 1回に1つの属性でのみファネルクエリを実行できます。 |
ユニーク値 | 256個を超える一意のファネルクエリ値が関連するファネルクエリについては、結果は概算となります。 |
最大ステップ数 | 単一のファネルクエリにおいて最大10のステップを設定できます。 |
ファネルクエリの例
この例では、ブラウザモニタリングのPageView
イベントとその属性を問い合わせます。これは、アカウント登録からアップグレードにまで進んだユニークブラウザセッションを問い合わせています。各ステップには、キーワードのAS
で示すラベルが含まれています。
FROM PageView SELECT funnel(session, WHERE pageUrl='http://www.storefront.com/signup' AS 'Email Sign Up', WHERE pageUrl='http://www.appproduction.com/basic_feature' AS 'Feature Compare', WHERE pageUrl='http://www.appproduction.com/advanced_feature/upgrade' AS 'Upgraded Account') SINCE 12 hours ago
このクエリは、以下を返します:
アカウントに登録し、機能比較ページを訪問し、アップグレードしたユーザーの数を表示するNRQLファネルクエリの例。
ファネル関数の括弧内には、追加のアクションがカンマ区切りリストで含まれています:
SELECT funnel(session, WHERE name='Controller/about/main' AS 'Action A', WHERE name = 'Controller/about/careers' AS 'Action B', WHERE name = 'Controller/about/insights' AS 'Action C', WHERE name = 'Controller/about/apply' AS 'Action D') FROM PageView SINCE 1 week ago