Skip to main content
マーケターは通常、ユーザープロパティルール(ユーザー属性)、ユーザーアクティビティルール(イベント属性)、ユーザーアフィニティルール、カスタムセグメントなど、複数の条件に基づいてユーザーをセグメント化します。多くの場合、AND または OR 条件を使用して複数の条件を組み合わせ、複雑なユーザーセグメントを作成します。 わかりやすくするために、A、B、C、D が「セグメントブロック」、つまりすべてのフィルターを含むイベントおよびユーザー属性を表すとします。たとえば、A は「男性のユーザー」、B は「過去 3 日間にカートに追加: 財布 を実行したユーザー」などとなります。セグメントブロックを AND/OR 演算子で組み合わせることで、A AND B AND C AND D や A OR B OR C OR D のようなセグメントをいつでも作成できます。 AND しかし、「(男性であり、かつ過去 3 日間にカートに追加: 財布 を実行したユーザー)OR(女性であり、かつ過去 3 日間にカートに追加: ハンドバッグ を実行したユーザー)」のような複雑なセグメントが必要な場合、これらの演算子だけでは簡単に作成できません。その理由は、セグメントブロックを組み合わせるために使用できるのは AND または OR のいずれか一方のみだからです。AND と OR を組み合わせて同時に使用することはできません。定義内の演算子の 1 つを変更すると、残りも自動的に変更されます。ここでネストが必要になります。

ネストとは

上記の例のような複雑なセグメントを作成する場合、いくつかのセグメントブロックをグループ化する必要があります。論理的には、セグメントブロック A と B を括弧内にグループ化する、つまり「(A AND B)」とすると、複数のセグメントブロックが「ネスト」されたことになります。つまり、セグメントブロックの組み合わせが「ネストされたブロック」を表します。 ネストされた AND/OR 機能を使用すると、次のような組み合わせで複雑なセグメントを作成できます。
  • (A AND B) OR (C AND D)。ここでは、(A AND B) と (C AND D) の 2 つのネストされたブロックが OR 演算子で組み合わされています。
  • (A OR B) AND (C OR D)。ここでは、(A OR B) と (C OR D) の 2 つのネストされたブロックが AND 演算子で組み合わされています。
  • (A OR B) AND C AND D。ここでは、1 つのネストされたブロック (A OR B) が、他の 2 つのセグメントブロック C および D と AND 演算子で組み合わされています。
  • (A AND B) OR C OR D。ここでは、1 つのネストされたブロック (A AND B) が、他の 2 つのセグメントブロック C および D と OR 演算子で組み合わされています。
ネスト

ネストレベルについて

上記の例は、1 レベルのネストです。たとえば、複雑なセグメント (A AND B) OR (C AND D) の場合です。上記の例では、A、B、C、D はユーザー属性またはイベント属性を使用したシンプルな定義です。これらはセグメントではなく、シンプルなユーザー属性またはイベント属性です。 しかし、A、B、C、D 自体がシンプルな定義ではなく、ネストされたブロックやセグメントである場合、ネストは 1 レベルを超えます。 ネストレベルを増やすアクション:
  1. クエリでカスタムセグメントを使用する: クエリでカスタムセグメントを使用すると、クエリのネストレベルは次のように増加します。
    [そのクエリのネストレベル = カスタムセグメントの n レベル + 1 レベル増加]
  2. クエリでネストされたフィルターを使用する: クエリでネストされたフィルターを使用すると、クエリのネストレベルが 1 レベル増加します
注:
  1. クエリに通常のフィルターボタンを使用しても、ネストレベルには影響しません。このロジックを使用して作成されたカスタムセグメントは、ネストレベル 1 のカスタムセグメントになります。
  2. クエリに複数のネストされたフィルターを追加しても、ネストレベルがその数だけ増加するわけではありません。ネストレベルを 1 増やすには、少なくとも 1 つのネストされたフィルターがあれば十分です。

ネストレベルのさまざまなケース:

いくつかの例で理解しましょう:

ケース 1: レベル 1 のネスト

F はイベント「過去 3 日間に App Inbox Icon Clicked を少なくとも 1 回実行した」 G はイベント「Email viewed in Browser」 H はユーザー属性「Install status is True」 I はイベント「WhatsApp message clicked」 ここでのネストレベルは 1 です。理由は次のとおりです:
  1. 属性またはネストされたフィルターのみを使用して作成されたカスタムセグメントは、レベル 1 のカスタムセグメントになります
たとえば、これらの属性を使用して E = (F AND G) OR (H AND I) という定義でカスタムセグメント E を作成した場合、セグメント E のネストレベルは 1 になります。ここで、OR は通常のフィルターで、AND はネストされたフィルターです。 または ユーザープロパティまたはユーザー行動を使用してカスタムセグメントを作成するだけの場合 この場合、カスタムセグメントのネストレベルは 1 になります。 セグメント F = ネストレベル 1

ケース 2: レベル 2 のネスト

セグメント F = Unsubscribe is False とします
セグメントの編集
このセグメント F(ネストレベル 1)をクエリで使用して、別のカスタムセグメントを作成します 上記のクエリはネストレベル 2 です。この場合のネストレベルは次のように定義されます:
  1. そのクエリのネストレベル = カスタムセグメントの n レベル + 1 レベル増加
したがって、上記のクエリのネストレベル = レベル 1(セグメント F)+ 1 レベル = レベル 2

ケース 3: レベル 3 のネスト

セグメントの定義: F は、イベント属性「Best time to send Email is between 10 Hrs and 13 Hrs」で構成されるカスタムセグメントです。これにより、ネストレベル 1 のカスタムセグメント F が作成されます。 作成したカスタムセグメント F(Seg F - ネストレベル 1)を、次のように他の属性とともにクエリで使用した場合: ここでのクエリのネストレベルは 3 です。理由は次のとおりです:
  1. カスタムセグメント F(ネストレベル 1)がクエリに追加されているため 2 レベル(カスタムセグメント F のレベル 1 + 1 レベル = ネストレベル 2)
  2. さらに 1 レベル - ネストされたフィルターを使用してイベント属性が使用されており、ネストレベルが 2 増加します
このクエリを使用してカスタムセグメントを作成すると、作成されるカスタムセグメントのネストレベルは 3 になります。 または 内部に 2 つのカスタムセグメントを含むカスタムセグメントを作成すると、レベル 3 のクエリが作成されます。 例: セグメント cs_level_1 = 属性(過去 3 日間に Allowed web Push Subscription を少なくとも 1 回実行した)を使用して作成したレベル 1 のカスタムセグメントとします セグメント cs_level_2 = カスタムセグメント cs_level_1 をクエリに追加して作成したレベル 2 のカスタムセグメント レベル 2 = cs_level_1 の 1 レベル + ネスト 1 レベル(冒頭で説明したルールに従う) Cs_level_3 = カスタムセグメント cs_level_2 をクエリに追加して作成したレベル 3 のカスタムセグメント レベル 3 = cs_level_2 の 2 レベル + ネスト 1 レベル(冒頭で説明したルールに従う)

ケース 4: > レベル 3 のネスト

セグメントの定義: F はユーザー属性またはイベント属性 J、K、L、M で構成されるカスタムセグメントで、F はセグメント E の定義でカスタムセグメントとして使用されます F は (J OR K) AND (L OR M) として定義されたネストされたセグメントです。 J はイベント「過去 3 日間に主に (Device Model is Nexus 5 (case insensitive)) で Notification Received Android を実行した」 K はユーザー属性「Best time to send Email is between 10 and 13」 L はユーザー属性「SPAM is false」 M はユーザー属性「Mobile user is True」 上の画像では、クエリには 2 レベルのネストがあり、これらのフィルターを使用してセグメント F を作成すると、ネストレベルは 2 になります(E -> F -> J)。 上記のカスタムセグメント F(ネストレベル 2)をクエリで使用すると、上記の定義に従って、クエリのネストレベルは 3 に増加します。 ここで E = (F and G) OR (H AND I) したがって、セグメント E 全体は ( {(J OR K) AND (L OR M)} AND G) OR (H AND I) として定義されます。 ここでの特定のクエリのネストレベルは 4 です。理由は次のとおりです:
  1. カスタムセグメント F(ネストレベル 2)が導入されているため 3 レベル(カスタムセグメント F のレベル 2 + 1 レベル = レベル 3)- 冒頭で説明したルールに従う。
  2. さらに 1 レベル - ネストされたフィルターを使用してイベント属性が使用されており、ネストレベルが 4 に増加します
このクエリを使用してカスタムセグメントを作成すると、作成されるカスタムセグメントのネストレベルは 4 になります。MoEngage は最大 6 レベルのネストをサポートしているため、セグメント E は上限内であり、処理されます。カスタムセグメントが拒否されるのは、ネストが 6 レベルを超える場合のみです。

ネストされたフィルターの使用方法

ネストされたブロックを追加するには、「+ Nested Filter」ボタンを使用します。1 レベルを超えるネストを持つセグメントを作成するには、まずカスタムセグメント(上記の例のセグメント E)を作成し、そのカスタムセグメントをフィルターで使用する必要があります。 ネストされた条件は、外側の条件と反対の条件があらかじめ選択されています。そのため、外側の条件が AND の場合、ネストされた条件は OR になり(例: (A AND B) OR (C AND D))、その逆も同様です(例: (A OR B) AND (C OR D))。 ネストされた条件と外側の条件はどちらも変更できます。外側の条件を変更すると(たとえば AND から OR へ)、ネストされた条件は自動的に反対の条件(この場合は OR から AND)に更新され、その逆も同様です。 ネストされた AND/OR 機能は、セグメンテーションページおよびキャンペーン作成ページのターゲットオーディエンスセクションで利用できます。イベントトリガーキャンペーンのトリガー条件ではサポートされていません。 特定のユーザーセグメントを、選択したユーザーセグメントから除外することもできます。これを使用するには、Exclude user チェックボックスをクリックします。 MoEngage は最大 6 レベルのネストをサポートしています。これらの組み合わせにより、ユーザーをセグメント化するための特定の条件を柔軟に定義できます。 注:
ファイルセグメントは、ネストの上限にカウントされません。

ネストが 6 レベルを超える場合に簡素化する方法

セグメントクエリは、条件の論理式です。どのような論理式も、1 レベルのネストに簡素化できます。論理ルールを活用して簡素化できます。 ネストを簡素化するために使用される論理ルール:
  • (X AND Y) AND Z = X AND Y AND Z
  • (X OR Y) OR Z = X OR Y OR Z
  • (X AND Y) OR Z = (X OR Z) AND (Y OR Z)
  • (X OR Y) AND Z = (X AND Z) OR (Y AND Z)
以下は、多重にネストされたセグメントを 1 レベルのネストにまとめる例です。セグメントブロック A と B を A AND B として組み合わせた状態から始め、それ自体がセグメントである各ブロックを展開します。
  1. A = C OR D なので、セグメントは (C OR D) AND B になります。
  2. C = E AND F なので、セグメントは ((E AND F) OR D) AND B になり、これは (E OR D) AND (F OR D) AND B に簡素化されます。
  3. E = G AND H なので、セグメントは ((G AND H) OR D) AND (F OR D) AND B になります。
上記の論理ルールを適用すると、これは (G OR D) AND (H OR D) AND (F OR D) AND B に簡素化され、ネストレベル 1 のクエリになります。どのようなセグメント定義も、この方法で 1 レベルのネストに分解できます。
これらのルールはネストの深さを減らしますが、項が繰り返されます。上記の結果では D が 3 回出現しているように、クエリはフラットになるほど長くなります。セグメントクエリは実行前にシリアル化され、256 KB(262,144 文字)を超えることはできません。これは 6 レベルのネスト上限とは別の制限です。すでに複数のカスタムセグメントや長い値リストを持つフィルターを参照している定義をフラット化する場合は、その後クエリを実行して、引き続きカウントが返されることを確認してください。セグメントクエリがクエリ長エラーで失敗するのはなぜですか?を参照してください。