あるケースでは、Amplitudeに送信されなかったプロパティに基づいて分析を実行することがありますが、それは既存のプロパティから派生させることができます。Amplitudeの派生プロパティにより、複数の既存プロパティに適用できる関数と演算子に基づいて、遡及的に新しいイベントとユーザープロパティを作成することができます。これらは、生データに影響を与えず、その場で計算されます。
たとえば、ショッピングカートに追加されたアイテムが割引対象であるかどうかについて、グループ化するチャートを作成することができます。その場合、価格が一定額を超えるかどうかに基づいて、値がブール値である派生プロパティを作成することができます。
注意: 派生プロパティは、エンタープライズ顧客と、データ管理アドオン(以前の名称はタクソノミーアドオン)を購入したとお客様のみが利用できます。
派生プロパティを作成する
注意: 派生プロパティを作成するには、管理者またはマネージャーでなければなりません。
派生プロパティを作成するには、次のステップに従ってください:
- [データ管理]で、[データプロパティ]タブに移動します。
- テーブルの上部にある[新しいプロパティを派生する]をクリックします。
- [新しいプロパティを派生する]モーダルで、新しいプロパティ名(必須)と説明(オプション)を入力します。
- 数式を入力します。有効な関数と演算子のリストについては、下記を参照してください。
- [保存]をクリックします。派生したプロパティには、𝑓𝑥記号のある[データ管理]プロパティテーブルが表示されます。
結果をプレビューする
入力した数式が有効である限り、数式エディタの下のスペースで結果をプレビューすることができます。そうするには、数式で使用するプロパティの既存の値を選択するか、または自由形式の値をテストしてください。これは、[作成/編集]モーダル、または、保存された派生プロパティのサイドパネルから実行できます。
派生プロパティの使用例
以前の参照URLの例では、次のような文字列演算子を使用して数式を書くことができました:
SPLIT(referrer_url, "/", 2)
この式は、たとえば、「https://www.google.com/search?q=amplitude」の値を、値「www.google.com」に変換します。しかし、これをさらに簡素化して、単に「google」だけにしたら、どうなるでしょうか?これは、別のSPLIT関数内でSPLIT関数の結果をラップすることによって、実行できます。結果として出てくる数式は次のようになります:
SPLIT(SPLIT(referrer_url, "/", 2), ".", 1)
Amplitudeは、数学演算子もサポートしています。たとえば、小計とTipプロパティを含むイベントがあり、合計額に基づいていくつかの分析を実行したいとしましょう。次のように実行できます:
SUM(小計、Tip)
合計注文サイズが$50を超えた場合、割引注文がいくつあるかを知りたいと思うようになるかもしれません。この数式には、特定の注文が割引を受け取るかどうかが表示されます:
IF(SUM(小計、tip) >= 50, true)
注意: 派生プロパティを使用するクエリは、数式の複雑さに応じて、クエリ時間が長い場合があります。派生プロパティごとに、最大10のプロパティ参照の制限もあります。
関数と演算子
文字列関数
関数 | 説明 | 例 | 結果 |
---|---|---|---|
REGEXEXTRACT (text_property, regular_expression) | regular_expressionに一致する文字列を抽出する | REGEXEXTRACT("shirt-150", "[0-9]+") | "150" |
REGEXREPLACE (text_property, regular_expression, replacement_text) | プロパティの値を、replacement_textとreplacementと一致するテキストで置き換えます。 | REGEXREPLACE("en-US", "-.*", "") | "en" |
連絡先(プロパティ1、プロパティ2) |
別のプロパティまたはテキスト値で、プロパティを連結します。 | 連絡先("firstName", "lastName") | "firstName lastName" |
小文字 (text_property) | プロパティの値のすべての文字を小文字にする | 小文字("John") | "john" |
大文字 (text_property) | プロパティの値のすべての文字を大文字にする | 大文字("John") | "JOHN" |
SPLIT (プロパティ、区切り、[index]) | 区切り文字に基づいてプロパティを割り出し、分割要素の配列を返します。その索引の要素を返すオプションの索引を取ります。 | SPLIT("a_b_c", "_")
SPLIT("john@example.com", "@", 0) |
["a", "b", "c"]
"john" |
削除 (プロパティ、テキスト) | プロパティのテキストのすべての発生を削除する | 削除("en-US", "en-") | |
EXTRACT_FROM_DICT (property, text) | 特定のキーに基づいて、辞書文字列から値を抽出する | EXTRACT_FROM_DICT("{'id': 1, 'name': 'John', 'country': 'US'}", "name") | "John" |
数学関数
関数 | 説明 | 例 | 結果 |
---|---|---|---|
SUM(num_property1, num_property2)または加算( |
他のプロパティまたは数字を持つプロパティを加算します。`+`演算子と同等 |
SUM(小計、ヒント) >>> SUM(10, 2) |
12 |
MINUS(num_property1, num_property2)または減算( |
他のプロパティまたは数字を持つプロパティを減算します。`-`演算子と同等。 |
マイナス(合計、ヒント) >>> マイナス(12、2) |
10 |
掛算 (num_property1, num_property2) |
他のプロパティおよび/または数字を持つプロパティを掛算します。`*`演算子と同等。 |
掛算(価格、数量) >>> 掛算(2.50、4) |
10 |
割算(分母、分母) |
別のプロパティまたは数で、プロパティを割算します。`/`演算子と同等。 |
割算(calorie_take、calorie_goal) >>> 割算(1000、2000) |
0.5 |
累乗(num_property、指数) |
指数累乗にプロパティ値を取ります。 |
累乗(プロパティ、3) >>> 累乗(2、3) |
8 |
MIN(num_property1、num_property_2) |
2つの数字間の最小値を返します。 |
MIN(5、10) |
5 |
(num_property1、num_property_2) |
2つの数字間の最大値を返します。 |
最大(5、10) |
10 |
CEIL(num_property) |
最も近い整数に切り上げます。 |
CEIL(3.8) |
4.0 |
FLOOR(num_property) |
最も近い整数に切り下げます。 |
FLOOR(3.8) |
3.0 |
オブジェクト関数
関数 | 説明 | 例 | 結果 |
---|---|---|---|
EXTRACT_FROM_DICT (property, text) | 特定のキーに基づいて、辞書文字列から値を抽出する | EXTRACT_FROM_DICT("{'id': 1, 'name': 'John', 'country': 'US'}", "name") | "John" |
日付/時間関数
注意: すべてのUNIXのタイムスタンプは、ミリ秒として見込まれ、ミリ秒として出力されます。
関数 | 説明 | 例 | 結果 |
---|---|---|---|
DATE_TO_LONG (date_property) |
日付をUNIXタイムスタンプに変換する |
DATE_TO_LONG("2020-12-01") |
1606780800000 |
TIME_TO_LONG (time_property) |
日付時間 (YY-MM-dd[T]HH:mm:ss)をUNIXタイムスタンプに変換する |
TIME_TO_LONG("2020-12-01 12:00:00") |
1606780800000 |
LONG_TO_TIME (number_property) |
UNIXタイムスタンプを日付・時間に変換する |
LONG_TO_TIME (1606780800000) |
"2020-12-01 12:00:00" |
LONG_TO_DATE (number_property) |
UNIXタイムスタンプを日付に変換する |
LONG_TO_DATE (1606780800000) |
"2020-12-01" |
DATE_TIME_FORMATTER (datetime_property, old_format, new_format) |
日付プロパティのフォーマットを新しいフォーマットに変換します。 詳細については、Java SimpleDateFormatを参照してください。 |
DATE_TIME_FORMATTER ("05.01.2021 12:00:00:000", "MM.dd.yyyy hh:mm:ss:SSS", "yyyy/MM/dd") |
"2021/05/01" |
今日() |
現在の日は、UTCのエポック時間でロングとして表されます。 |
今日() - start_date_in_ms >>> 1609459200000 - 1577836800000 |
31622400000 |
条件演算
演算 | 説明 | 例 |
---|---|---|
IF(logical_expression, value_if_true, value_if_false) |
logical_expressionが真の場合は、value_if_trueを返します。そうでない場合は、value_if_falseを返します |
IF(price == 0, "true", "false") IF(property == "(none)", "Property was not set", "Property was set") IF(OR(region == "California", region == "New York"), "USA", "Other") |
AND(logical_expression_1, logical_expression_2) |
返り 両方の論理式が真の場合、Trueを返し、そうでない場合はfalseを返します |
AND(is_subscribed == "true", has_valid_promo == "true") |
OR(logical_expression_1, logical_expression_2) |
理論式が真の場合は、Trueを返します。そうでない場合は、falseを返します |
OR(has_email == "true", has_phone == "true") |
SWITCH(expression, case_1, value_1, [case_2, value_2 ...], [default]) |
式を評価し、定義されたケースに基づいて値を返します。定義された場合、ケースが満たされない場合、デフォルト値を返します。そうでない場合は、nullを返します。 |
SWITCH(tier, "gold", 2, "silver", 2, "bronze", 1, 0) |