# 仮想プロパティの事例
仮想プロパティとは、SQLコードを使用してデータベースに格納されたプロパティフィールドに対して 2次計算を実行することによって作成されるプロパティを指します。仮想プロパティの SQLコードは trino構文を使用します。Trinoドキュメント (opens new window)にアクセスして、trinoの構文と関数の使用方法を取得できます。
事例1:時間差計算
データ収集プランをトラッキングする際に、一般的にユーザーのライフサイクルの日数はイベントプロパティとして収集されないため、以下の方法でイベントプロパティにユーザー登録時間を追加し、イベントが発生時刻のユーザーのライフサイクルを取得できます。
date_diff(
unit
,
timestamp1
,
timestamp2
)
の関数でユーザープロパティ「登録時間」とイベントプロパティ「イベント発生時間」の間の日数を計算し、仮想ユーザープロパティ「ユーザーライフサイクル日数」を生成できます。例:dat_diff('day', date("register_time"), date("#event_time"))
事例2:データタイプ変換
使用中に送信されたプロパティタイプが予想される状況と一致しない場合があります。プロパティのタイプ変換は、cast(value AS type)
関数を使用して実行できます。 プロパティ値を期待される型にキャストできない場合、新しいプロパティ値は空になることに注意してください。例:cast(old_prop_string as int)
事例3:タイムスタンプ変換
登録時間などのカスタムプロパティを数値のタイムスタンプとしてアップロードすると、 from_unixtime(unixtime)
関数を使用して時間形式に変換できるため、システムでフィルターやグループなどの操作を実行できます。例:from_unixtime("register_time")
事例4:文字列の切り取り
場合によっては送信される内容が複数の情報の組み合わせである場合があります。 例えば、プロパティ「報酬を受け取る」の値は、文字列の「ダイヤモンド 300 を取得する」として送信されました。 プロパティの固定位置を切り取って、新しいプロパティを作成する際には、次の式で実現できます。cast(substring("get_reward", 5, 4) as int)
、関数substring(
string
,
start
,
length
)
で文字列の切り取りの中で、start
からlength
の長さの断片であり、cast
(
value AS type
)
で数値型に変換して今後の分析に利用できます。
事例5:共同重複排除
ゲームデータ分析シナリオでは、アカウントIDやサーバーIDなどの共通イベントプロパティが記録されることがよくありますが、現在システムは単一のプロパティに対してのみ重複排除計算を提供されています。アカウントIDとサーバーIDを組み合わせて重複排除したい場合は、以下のルールで仮想プロパティを作成できます。concat(server_id, '
@
',account_id)
、そのうち関数concat(
string1
,
...
,
stringN
)
で複数の文字列型のプロパティを統合できます。
事例6:条件判断
ゲームのテスト段階では、データをクリアする場合があります。データをクリアする前と後でユーザーIDは同じですが、データをクリアする前後のイベントデータは独立しており、継承関係がなく、サーバーによりクリアする時間が異なります。一つのプロパティを使用して1人のユーザーのイベントがクリア前か後かを区別する場合は、次の仮想プロパティを作成して実現できます。
case
when "serverid" = 1 and "#event_time" > cast('2020-11-15 10:30:00.000' as timestamp) then 'クリア後'
when "serverid" = 2 and "#event_time" > cast('2020-11-22 10:30:00.000' as timestamp) then 'クリア後'
else 'クリア前'
end
事例7:定数
IF 数を使用し、定数である仮想プロパティを作成できます。例えば、リテンション分析モデルで、復帰ユーザー数の累積合計を同時に表示できるようにする場合、定数1で仮想プロパティを作成し、このプロパティに対して集計計算を実行できます。if("#event_time" is not null, 1, 1)
。ここで、"#event_time" はnull 以外のシステムフィールドに設定されるのが一般です。