セグメンテーションにおけるオブジェクトデータ型

概要

情報

これはアドオン機能です。アカウントの有効化については、MoEngageのCSM(カスタマーサクセスマネージャー)に連絡するか、 サポートチーム にお問い合わせください。

セグメンテーションは、オブジェクト内の属性を特定し、クエリを実行するための構造化された組織的アプローチを提供します。これにより、オブジェクトの特性に基づいた効果的な分析と意思決定が可能になります。詳細については、 オブジェクトデータ型のサポート を参照してください。

  • MoEngageダッシュボードの Create segment ページでは、オブジェクトデータタイプのユーザーセグメンテーション機能が Select audience セクションの User property および User behaviour タブの下に表示されます。
  • セグメンテーションは、オブジェクトの配列に対して最大2レベルのネストをサポートします。レベル2を超えるネストでは、属性は文字列形式で表示されます。
  • オブジェクトデータの 配列 タイプの属性の場合、セグメンテーションは高度なクエリのために With オペレーターと And オペレーターを提供します。

オブジェクトを使用したセグメンテーションクエリの作成

オブジェクトの属性は、任意のプリミティブデータ型である可能性があります。このセクションでは、次のデータタイプを使用して、ユーザー属性およびイベント属性シナリオのためのセグメンテーションクエリのいくつかの例を提供します:

クエリ文字列属性

ユーザー属性

犬を飼っているユーザーをセグメント化したい場合は、文字列データ型 Animal.pets と演算子 is を使用して、ペットとして犬を飼っているユーザーを取得できます。

イベント属性

過去3日間に少なくとも1回 ペットを飼った ユーザーを、 ゴールド という属性を持つ会員(文字列データ)および というペットを持つユーザー(オブジェクトデータ)でセグメント化したい場合。

説明:
ここで、Membershipは文字列データ型のイベント属性であり、 Pets.species は文字列オブジェクトデータ型の別のイベント属性です。 And 演算子は、データベースから取得されたユーザーが両方の条件を満たしていることを保証します。

セグメンテーションを使用して空の文字列値をクエリする

特定の属性に対して空の文字列値を持つユーザーをセグメント化したい場合。保存された値は""(キーは設定されていますが、値はnullです)。

説明:
ここで、 ListOfPets は、その中にユーザー属性として Name を持つオブジェクトです。したがって、クエリでは、 ListOfPets.Name 属性が is empty フィルターと共に使用されます。

数値属性をクエリする

ユーザー属性

6歳未満のペットを飼っているユーザーをセグメント化したい場合。

説明:
ここで、 Pets.age は数値データ型のユーザー属性であり、 less than は6歳未満のペットを持つユーザーをフィルタリングするための関係演算子です。

イベント属性

500ドルのTシャツを購入したユーザーをセグメント化したい場合。

説明:
ここでは、 ユーザーの行動 ドロップダウンにオブジェクト属性 product.price が表示され、値は$500です。セグメンテーションクエリには以下のイベント属性があります:

  • Product.Colour を文字列データ型の属性として
  • Product.Price は数値データ型のオブジェクト属性です
  • Product.Currency は文字列データ型のオブジェクト属性として

例のコード

[
  { product: “t-shirt”, price: “$500”, colour: “red”, currency: “USD” },
  { product: “trouser”, price: “$800”, colour: “white”, currency: “EUR” },
  { product: “t-shirt”, price: “$300”, colour: “blue”, currency: “EUR” }
]
    

クエリ日付時刻属性

イベント属性:

赤いTシャツを購入し、価格が$500で、購入日が2024年5月30日より前のユーザーをセグメント化したい場合

説明:
ここで、セグメンテーションクエリには次のオブジェクトイベント属性があります:

  • カラー は文字列データ型のイベント属性で、赤です。
  • Product.Price は文字列データ型のイベント属性です。
  • Product.Purchase-date は日付データ型のイベント属性オブジェクトです

例のコード

[
  { product: “t-shirt”, price: “$500”, colour: “blue”, purchase-date: “23-12-2023” },
  { product: “trouser”, price: “$800”, colour: “white”, purchase-date: “23-12-2023” },
  { product: “t-shirt”, price: “$300”, colour: “red”, purchase-date: “23-12-2023” }
]
    

配列属性をクエリする

イベント属性

過去60日以内に少なくとも1回ワクチン接種を受けた犬を飼っているユーザーをセグメント化したい場合、犬種は ラブラドール 、年齢は5歳未満、好きなおやつは とします。

例のコード

Pets object array: 
[ 
  { species : “Dog”, vaccinated: “Yes”, Age : 2, treats : [‘bone’, ‘candy’, ‘pedigree’] },  
  { species : “Cat”, vaccinated: “Yes”, Age : 2, treats : [ ‘candy’, fish] }, 
  { species : “Dog”, vaccinated: “No”, Age : 4, treats : [‘bone’, ‘pedigree’] }
]
    

ネストされたオブジェクトのクエリ

イベント属性

300 USDの価格の本を購入したユーザーをセグメント化したい場合。

例のコード

[
  {
    "item-id" : 123,
    "item-type" : "books",
    "item-cost" : { "amount" : 100, "currency" : "USD" }
  },
  {
    "item-id" : 456,
    "item-type" : "fruits",
    "item-cost" : { "amount" : 200, "currency" : "USD" }
  },
  {
    "item-id" : 678,
    "item-type" : "books",
    "item-cost" : { "amount" : 140, "currency" : "USD" }
  }
]
    

クエリ結果 」セクションは、 セグメントを作成 ページでダッシュボード上で実行されたすべてのクエリの履歴を表示します。各クエリについて、 クエリ時間 説明 ソース ユーザー数 、および 到達可能なユーザー などの詳細を見つけることができます。

「With」演算子の機能

オブジェクトデータ型を使用してクエリを作成するには、「With」とAND/OR演算子の両方を使用できます。AND/OR演算子はオブジェクト全体に属性フィルターを適用しますが、With演算子はオブジェクト内に属性フィルターを適用します。

With演算子を使用する

次のペットオブジェクトデータ型を考慮してください。これは、With演算子を使用して以下のいくつかの使用例を達成するためのものです。

ペットオブジェクト

[
  { Breed: “Lab”, Age: “3”, Treat: “Bone” },
  { Breed: “Lab”, Age: “5”, Treat: “Fish” },
  { Breed: “Bulldog”, Age: “3”, Treat: “Pedigree” }
]
    

Example 1

過去60日間に3回ワクチン接種を受けた犬を持つユーザーをセグメント化したい場合、犬種は ラブラドール で、犬の年齢は5歳未満、犬のお気に入りのおやつは である必要があります。この条件を With 演算子を使用して設定します:

このユースケースを達成するには、以下のようにクエリを分解します:

  • 犬種が ラブラドール のペットを持つユーザーを見つける
  • ラブラドール犬の中で、年齢が5歳未満の犬を見つけてください。
  • 5歳未満のラブラドール犬の中で、お気に入りのおやつが である犬を見つけてください。

ここでは、 with 演算子が最初に親属性を検索します(上記の例では - pets.age です)そして、その子属性(この場合 - pets.treat)にフィルターを適用します。

このクエリは、上記のユーザーを返します。なぜなら、オブジェクトの配列には、年齢が5歳未満で好きなおやつが骨であるラボがいるからです。

Example 2

過去60日間に犬が3回ワクチン接種を受けたユーザーをセグメント化したい場合、犬の品種が ラブラドール で、犬の年齢が5歳未満で、犬のお気に入りのおやつが であるユーザーを対象とします。

このクエリ は返されません 上記のユーザーは、年齢が5歳未満のラブラドールがいるものの、彼らの好きなおやつは魚ではないためです。同時に、好きなおやつが魚であるラブラドールの品種がいますが、その年齢は5歳未満ではありません。したがって、このユーザーはセグメンテーション中に返されません。

AND演算子の使用

次のペットオブジェクトデータ型を考慮して、以下のいくつかのユースケースを達成するためにAnd演算子を使用する例を示します

ペットオブジェクト

[
  { Breed: “Lab”, Age: “3”, Treat: “Bone” },
  { Breed: “Lab”, Age: “5”, Treat: “Fish” },
  { Breed: “Bulldog”, Age: “3”, Treat: “Pedigree” }
]
    

Example 1

過去60日間に犬が3回ワクチン接種されたユーザーをセグメント化したい場合、ペットが犬の品種が ラブラドール であること、ペットの年齢が3歳以上であること、ペットのお気に入りのおやつが であるユーザーを対象とします。

このクエリは、次の条件を満たすユーザーを返します:

  • 過去60日間に3回ワクチン接種を受けたペットを飼っています
  • 犬種が ラブラドール のペットを飼っています
  • 3歳以上のペットはいますか
  • ペットは、彼らのお気に入りのおやつとして を持っています。

したがって、指定されたユーザーはセグメンテーション中に返されます。なぜなら、オブジェクトの配列全体のどこかにラボラトリーブリードのペットがあり、いくつかのペットは3歳以上だからです。また、一部のペットは魚をお気に入りのおやつとして好みます。したがって、すべての3つの条件は、AND条件の場合に必要なように独立して満たされています。

OR演算子の使用

以下のペットオブジェクトデータ型を例として、OR演算子を使用していくつかのユースケースを達成する方法を考えてみましょう。

ペットオブジェクト

[
  { Breed: “Lab”, Age: “3”, Treat: “Bone” },
  { Breed: “Lab”, Age: “5”, Treat: “Fish” },
  { Breed: “Bulldog”, Age: “3”, Treat: “Pedigree” }
]
    

Example 1

過去60日間に犬のワクチン接種を3回受けたユーザーをセグメント化したい場合、ペットが犬の品種が ラブラドール であるか、ペットの年齢が3歳以上であるユーザー、またはペットのお気に入りのおやつが ダック であるユーザーを対象とします。

このクエリは、上記のユーザーを返します。なぜなら、それは OR 演算子の定義を満たしているからです(すべての条件のうち少なくとも1つが満たされなければならないと述べています)。この場合、好きなおやつの条件 = ダック は満たされていませんが、他の2つの条件は満たされており、セグメンテーション中にユーザーに戻ります。

info

Information

With 演算子を使用すると、ユーザーは前のフィールドと同じネストレベルの属性を見ることができます。他のネストレベル属性は一貫性を維持するために表示されません。このユースケースを達成するために And 演算子を使用できます。

ネストされたオブジェクトの配列に対するクエリ

早期アクセス機能

これは早期アクセス機能です。あなたのアカウントで有効にするには、CSMに連絡するか、 サポートチケットを提出してください

オブジェクトの配列が別のオブジェクトの配列内にネストされているデータ構造では(最大2レベルまで)、両方のレベルにまたがるクエリを作成することで、高度なセグメンテーションを実行できます。これにより、親(レベル1)配列と同じオブジェクト要素内のネストされた(レベル2)配列からの属性の組み合わせに基づいてユーザーを見つけることができます。

ネストされた(レベル2)配列から属性を選択すると、セグメンテーションUIは2つの「With」演算子を提供します。

  • 最初の「With」オペレーターは、インデントされており、同じネストレベル(レベル2)で属性の条件を追加することができます。
  • 2番目の「With」オペレーターは、親レベル(レベル1)での属性に条件を追加することを可能にします。

ユーザー属性「nations」は、オブジェクトの配列です。各国のオブジェクトには、名前や人口のような詳細が含まれており、さらに「都市」と呼ばれるオブジェクトのネストされた配列があります。各都市オブジェクトには、それ自体の属性が含まれています。

国のオブジェクトの例

{
    "nations": [
        {
            "name": "India",
            "capital": "New Delhi",
            "population": 1.4,
            "date": "2025-06-04T00:00:00Z",
            "bool_attr": true,
            "array_strr": ["one", "two", "three"],
            "array_number": [1, 2, 3],
            "last_level": { "key1": "value1", "key2": 123 },
            "cities": [
                {
                    "name1": "Mumbai",
                    "population1": 20,
                    "landmarks1": ["Gateway of India1", "Chhatrapati Shivaji Maharaj Terminus"],
                    "date1": "2025-06-04T00:00:00Z",
                    "bool_attr1": true,
                    "array_strr1": ["one", "two", "three"],
                    "array_number1": [1, 2, 3],
                    "last_level1": { "key1": "value1", "key2": 123 }
                },
                {
                    "name1": "Bengaluru Urban",
                    "population1": 8,
                    "landmarks1": ["Vidhana Soudha", "Lal Bagh"],
                    "date1": "2025-06-04T00:00:00Z",
                    "bool_attr1": true,
                    "array_strr1": ["one", "two", "three"],
                    "array_number1": [1, 2, 3],
                    "last_level1": { "key1": "value1", "key2": 123 }
                }
            ]
        },
        {
            "name": "India",
            "date": "2025-06-04T00:00:00Z",
            "bool_attr": false,
            "capital": "New Delhi",
            "population": 1.4,
            "array_strr": ["one", "two", "three"],
            "array_number": [1, 2, 3],
            "cities": [
                {
                    "name1": "Bengaluru Rural",
                    "population1": 7,
                    "landmarks1": ["Vidhana Soudha", "Lal Bagh"],
                    "date1": "2025-06-04T00:00:00Z",
                    "bool_attr1": true,
                    "array_strr1": ["one", "two", "three"],
                    "array_number1": [1, 2, 3],
                    "last_level1": { "key1": "value1", "key2": 123 }
                }
            ]
        },
        {
            "name": "Japan",
            "date": "2025-06-04T00:00:00Z",
            "bool_attr": true,
            "capital": "Tokyo",
            "population": 125,
            "array_strr": ["one", "two", "three"],
            "array_number": [1, 2, 3],
            "cities": [
                {
                    "name1": "Tokyo",
                    "population1": 37,
                    "landmarks1": ["Tokyo Skytree", "Shibuya Crossing"],
                    "date1": "2025-06-04T00:00:00Z",
                    "bool_attr1": true,
                    "array_strr1": ["one", "two", "three"],
                    "array_number1": [1, 2, 3],
                    "last_level1": { "key1": "value1", "key2": 123 }
                },
                {
                    "name1": "Kyoto",
                    "population1": 1.5,
                    "landmarks1": ["Kinkaku-ji", "Fushimi Inari-taisha"],
                    "date1": "2025-06-04T00:00:00Z",
                    "bool_attr1": true,
                    "array_strr1": ["one", "two", "three"],
                    "array_number1": [1, 2, 3],
                    "last_level1": { "key1": "value1", "key2": 123 }
                }
            ]
        }
    ]
}
    

さて、人口が10億人を超える国のユーザーセグメントを作成し、その同じ「国」オブジェクト内に人口が1000万人を超える都市が存在するようにしましょう。

  1. セグメントを作成 」ページで、 ユーザー属性 タブをクリックします。
  2. 属性をフィルタリングすることから始めます: nations.population が 1 より大きい
  3. インデントされた「With」オペレーターが表示されます。これを使用して、 nations.cities.name1 のような都市属性に別の条件を追加できます。
  4. 最初の下に2番目の「With」演算子が表示されます。レベル1属性の条件を追加するには、 nations.cities.population1 が10より大きいことを使用してください。

Screenshot 2025-06-24 at 3.21.59 PM.png

このクエリは、「With」演算子を使用して、同じ「nations」要素内で両方の条件が満たされることを保証します。「インド」オブジェクトに関連するユーザーを見つけます。なぜなら、その人口は10億を超え(1.4として表されます)、10万人を超える人口を持つ都市(「ムンバイ」)が含まれているからです(20として表されます)。「日本」オブジェクトは、国の人口が10億人未満であるため、除外されます。

オブジェクトデータ型に関する考慮事項

オブジェクトデータ型は強力なセグメンテーション機能を提供しますが、MoEngage内での現在の範囲について認識しておくことが重要です。それらを理解することで、データ取り込み戦略を計画し、オブジェクトベースのセグメンテーションで達成できることを知ることができます。

  • ファイルのアップロード : オブジェクトデータ型は現在、 ファイルセグメント のアップロード機能ではサポートされていません。
  • ユーザーエクスポート : CSVを通じたユーザーエクスポートは、オブジェクトユーザー属性をサポートしていません。ユーザーデータをエクスポートする際、オブジェクト属性はCSVに含まれません。
  • 集約サポート : オブジェクトの配列の集約はサポートされていません。ただし、個々のオブジェクトおよびネストされたオブジェクト(配列でないもの)の集約はサポートされています。
  • 属性の比較 : オブジェクト間の属性比較は、ユーザー属性の比較ではサポートされていません。ただし、オブジェクトとプリミティブ間の属性比較(たとえば、オブジェクト内の値を単純な文字列や数値と比較すること)は引き続きサポートされています。
  • オブジェクトデータサポートのない機能 : 現在、以下のMoEngage機能はオブジェクトデータタイプを完全にはサポートしていません:
    • カスタムセグメントフィルタに基づく公開API
    • セグメントペイロードジェネレーター
    • アプリマーケットプレイス(Syncセグメントのカスタム宛先)
    • リアルタイムセグメンテーション
    • ユーザー親和性(オブジェクト属性に直接定義されている場合)

    これらのサポートされていない機能でオブジェクトデータが必要なシナリオでは、データを取り込み前により単純なプリミティブタイプに変換することを検討してください。

FAQs

arrow_drop_down 同じ属性に対してオブジェクトと文字列のような異なるデータ型を送信した場合、通常はエラーが発生します。これは、データ型の不一致が原因で、期待される形式にデータを処理できないためです。システムやプログラミング言語によっては、デフォルトの動作や型変換が行われることもありますが、一般的には一貫性が求められます。

同じ属性に対して複数のデータ型が取り込まれると、MoEngageは自動的に優先順位を付け、クエリのために最初に遭遇したデータ型を選択します。その属性に対して、2番目のデータ型の値をクエリすることはできません。

回避策: オブジェクトとオブジェクト値の配列の両方を類似のデータでクエリするには、データ取り込みで2つの別々の属性を使用することをお勧めします。それぞれをデータ管理でオブジェクトとして構成し、オブジェクト値を1つの属性に、オブジェクト値の配列を別の属性に渡します。これにより、両方を独立してクエリできるようになります。

arrow_drop_down セグメントを作成する際に、オブジェクトデータ型属性に対して値の提案は利用可能ですか?

オブジェクトデータ型属性には現在、値の提案はサポートされていません。これは、セグメンテーションを実行する際に、オブジェクト属性のドロップダウンリストに値が自動的に提案されないことを意味します。データ構造に基づいて手動で値を入力する必要があります。

この記事は役に立ちましたか?
1人中1人がこの記事が役に立ったと言っています

How can we improve this article?