イベントまたはユーザープロパティによってイベントをグループ化する際に、結果の一部が(無)
というグループに区分されていることに気づくかもしれません。Amplitudeでは、(無)
はnull値を指します。
イベントやユーザープロパティの値がnullのユーザーが存在するのはなぜでしょうか?
この記事では、ユーザーがnullや予期しないプロパティ値を持つ、よくある理由をいくつか取り上げています。
Amplitudeは、イベントベースのアナリティクスプラットフォームであり、すべてのチャートとコホートのクエリはイベントレベルで実行されます。チャートは、イベント発生時にイベントプロパティの値を返します。
イベントプロパティはイベントの構成要素であるため、イベントプロパティの値はイベントレベルで一意になることが考えられます。イベント時にnull値を持つイベントが送信された場合、そのイベントプロパティでグループ化する際に一部のイベントまたはユーザーが(無)
バケツに区分されることになります。
次に例を示します。ユーザーAは1月1日に1回と2月1日に1回、メッセージの送信
をトリガーしました。オーディエンスの
イベントプロパティは1月15日に実装されたため、ユーザーが1月1日にメッセージの送信
をトリガーした際には利用できませんでした。オーディエンス
プロパティは、デフォルト
とMentioned_Contacts
に等しい値のみを持つことができます。ユーザーAが2月1日にメッセージの送信
を実行した際、そのイベントプロパティはオーディエンス=デフォルト
となります。
この情報に基づき、ユーザーAは以下の表でどのようにカウントされるでしょうか?
ユーザーAはデフォルト
バケツに1回、(無)
バケツに1回カウントされます。ユーザーAは、2月1日のイベント時点ではオーディエンス=デフォルト
、1月1日のイベント時点では、オーディエンス=(無)
でした。
イベントとユーザーは、イベント発生時に送信されたプロパティ値に従って区分されます。
イベントプロパティと同様に、チャートはイベント発生時にユーザープロパティ値を返します。
ユーザープロパティは別のテーブルに格納され、ここで説明するプロセスに従ってイベントに適用されます。ユーザーのユーザープロパティ値が更新されても、イベントの履歴に紐づけられたユーザープロパティ値は変更されません。
ユーザーのイベントに紐づけられたカスタムユーザープロパティは、イベント発生時に存在するユーザープロパティ値を反映します。
もう一つの例をご紹介します。1月15日にAccount_Type
と呼ばれるユーザープロパティタイプが実装されました。ユーザーAは、アカウントタイプが買い物客
の登録ユーザーで、1月1日と2月1日に1回ずつカートに商品を入れる
をトリガーしました。
この情報に基づき、ユーザーAは以下の表でどのようにカウントされるでしょうか?
Account_Type
というユーザープロパティは1月15日まで実装されていなかったため、1月15日より前にトリガーされたすべてのイベントは、Account_Type
としてnull値を持つことになります。ユーザーAは(無)
バケツに1回、買い物客
バケツに1回カウントされます。
結果がユニーク毎に集計される場合、ユーザーは各ユニークバケツ内で重複排除されます。つまり、もしユーザーAが2月1日と2月2日にカートに商品を追加
をトリガーした場合でも、ユーザーAは上記の買い物客
バケツには1回だけカウントされることになります。
このロジックは、非nullのユーザープロパティ値を送信する場合にも適用されます。イベントとユーザーは、イベント発生時に適用されたプロパティ値に従って区分されます。
ユーザーの属性は時間の経過とともに変化する可能性があるため、このロジックが採用されています。例えば、都市
はユーザーが様々な都市に移動し、その先々でイベントを発生させるため、時間ごとに変化する属性となります。イベント発生時にユーザーがどこにいたかを理解することは、ユーザーが直近にどこにいたかを理解することよりも価値があると考えられます。
ロケーションユーザープロパティ(都市
、DMA
、地域
、国
など)は、GeoIPによって決定されます。Amplitudeは、最も信頼性の高いデジタル地図ソースとして広く受け入れられているMaxMindデータベースを使用して、ユーザーのIPアドレスから位置情報を検索しています。
クライアント側のイベントでは、MaxMindがそのIPアドレスに対してnullを返した場合に、ロケーションプロパティが(無)
値となる場合があります。MaxMindは最も信頼できる情報源と考えられていますが、都市/地域の情報の正確性と可用性は国によって異なります(詳細はこちらで確認)。
サーバー側のイベントでは、ロケーションプロパティ値は、GeoIP(利用できない場合は、location_lat
とlocation_long
で代用)か、APIコールで明示的に定義されたものによって決定されます。AmplitudeのHTTP APIでは、都市
、DMA
、地域
、国
のカスタム値をイベントと一緒に送信することができます。これらの値を送信することを選択した場合、AmplitudeはGeoIPを反映するように変更を加えることはありません。必ず4つのフィールドを一緒に更新してください。これらのフィールドのいずれかを設定すると、他のフィールドは自動的にリセットされます(脚注3を参照してください)。
Amplitudeは、ユーザーのデバイスからdevice_brand
、device_manufacturer
、device_model
の文字列を直接取得し、これらの文字列をデバイスタイプのリポジトリにマッピングすることでデバイスファミリ
ーとデバイスタイプ
を決定しています。
世界的に新しい機種が次々と発売されていますので、まだマッピングされていないデバイスタイプが常にいくつかある可能性があります。このような場合、デバイスタイプ
は(無)
になります。
デバイスマッピング以外でも、これらのフィールド(platform
、os_name
、os_version
、device_brand
、device_manufacturer
、device_model
、carrier
)が一緒に更新されなかった場合に、サーバー側のイベントでデバイス情報がnullになる可能性があります。これらのフィールドのいずれかを設定した場合に、同じイベントの他のプロパティ値が明示的に設定されていない場合、他のプロパティ値はすべて自動的にnullにリセットされます(こちらで脚注2を参照してください)。
Need help? Contact Support
Visit Amplitude.com
Have a look at the Amplitude Blog
Learn more at Amplitude Academy
© 2025 Amplitude, Inc. All rights reserved. Amplitude is a registered trademark of Amplitude, Inc.