You are on page 1of 8

THE PLAY

Portfolio Analysis: Monetizing Users - ARPU


Once you have identified that there are users who have installed more than one application and generated activity. Its relevant to understand where users are monetizing within your application.

The Question
Of users who are installed and have generated activities in more than one property - which property in my portfolio are users monetizing on?

How To Query Your Data


First identify the table names of the two applications you are interested in reviewing. These will be inserted into the queries as app1 and app2. Remember, users need to have consistent UIDs in both applications in order to understand the overlap in installs. Six queries make up this analysis. Here is are the different groups of users that are relevant to review:

Have installed
APP1 (only) APP2 (only)

Have monetized
APP1 APP2 APP1 (only) APP2 (only)

Metric
ARPU APP1 ARPU APP2 ARPU APP1 ARPU APP2 ARPU APP1

Query #
1 2 3 4 5 6

APP1 + APP2

APP1 + APP2 ARPU APP2

Application Selection o o Replace <APP1_mtu> and <APP1_apa> with the name of your application you are interested in reviewing, for example: demogame1_apa, demogame1_mtu Replace <APP2_mtu> and <APP2_apa> with the other name of your application interested in reviewing, for example: demogame2_apa, demogame2_mtu Time Period o Replace <lower_date_in_YYYYMM_format> as the initial date of interest using the format YYYY-MMDD, for example 2012-06-01-- Replace <APP2_apa> with the name of your applications you are NOT interested in reviewing, for example: demogame2_apa. o Replace <upper_date_in_YYYYMM_format> as the initial date of interest using the format YYYY-MMDD, for example 2013-01-31 **See Queries section below **

How to Visualize the Results


A little more difficult to represent easily visually best bet is a simple table outlining the result. A bar graph can also help easily show where your best monetizing users are.

Have installed
APP1 (only) APP2 (only)

Have monetized
APP1 APP2 APP1 (only) APP2 (only)

Metric
ARPU APP1 ARPU APP2 ARPU APP1 ARPU APP2 ARPU APP1

Query #
1 2 3 4 5 6

Result
$0.10 $0.87 $0.27 $0.92 $1.47 $1.57

APP1 + APP2

APP1 + APP2 ARPU APP2

Queries
Query 1: # ARPU of users who installed app1 only and have monetized on app1
SELECT sum(revenues.app1rev)/count(*) FROM -- people who have installed only app1 (SELECT app1.app1s AS install_s, app1.app1utc as install_utc FROM (SELECT s AS app1s, min(utc_timestamp) AS app1utc FROM <APP1_apa> GROUP BY s)app1 FULL OUTER JOIN (SELECT s AS app2s, min(utc_timestamp) AS app2utc FROM <APP2_apa> GROUP BY s)app2 ON app1.app1s = app2.app2s WHERE app1.app1s IS NOT NULL and app2.app2s IS NULL )installs FULL OUTER JOIN -- people who have only monetized on app1 (SELECT app1.app1s AS revenue_s, app1.rev AS app1rev, app1.app1utc as revenue_utc FROM (SELECT s AS app1s, min(utc_timestamp) AS app1utc, sum(v) AS rev FROM <APP1_mtu> GROUP BY s)app1 FULL OUTER JOIN (SELECT s AS app2s, min(utc_timestamp) AS app2utc FROM <APP2_mtu> GROUP BY s)app2 ON app1.app1s = app2.app2s WHERE app1.app1s IS NOT NULL and app2.app2s IS NULL )revenues ON installs.install_s = revenues.revenue_s WHERE installs.install_s IS NOT NULL and revenues.revenue_s IS NOT NULL AND kt_date(install_utc)>= <lower_date_in_YYYYMM_format> AND kt_date(revenue_utc)<= <upper_date_in_YYYYMM_format> -- ARPU of people who have installed app1 only, and have generated revenue on app1

Query #2: ARPU of users who installed app2 only and have monetized on app2
SELECT sum(revenues.app2rev)/count(*) FROM -- people who have installed only app2 (SELECT app2.app2s AS install_s, app2.app2utc as install_utc FROM (SELECT s AS app1s, min(utc_timestamp) AS app1utc FROM <APP1_apa> GROUP BY s)app1 FULL OUTER JOIN (SELECT s AS app2s, min(utc_timestamp) AS app2utc FROM <APP2_apa> GROUP BY s)app2 ON app1.app1s = app2.app2s WHERE app1.app1s IS NULL and app2.app2s IS NOT NULL )installs FULL OUTER JOIN -- people who have only monetized on app2 (SELECT app2.app2s AS revenue_s, app2.rev AS app2rev, app2.app2utc as revenue_utc FROM (SELECT s AS app1s, min(utc_timestamp) AS app1utc FROM <APP1_mtu> GROUP BY s)app1 FULL OUTER JOIN (SELECT s AS app2s, min(utc_timestamp) AS app2utc, sum(v) AS rev FROM <APP2_mtu> GROUP BY s)app2 ON app1.app1s = app2.app2s WHERE app1.app1s IS NULL and app2.app2s IS NOT NULL )revenues ON installs.install_s = revenues.revenue_s WHERE installs.install_s IS NOT NULL and revenues.revenue_s IS NOT NULL AND kt_date(install_utc)>= <lower_date_in_YYYYMM_format> AND kt_date(revenue_utc)<= <upper_date_in_YYYYMM_format> -- ARPU of people who have installed app2 only, and have generated revenue on app2

Query #3: ARPU on app1 of users who installed both apps but only monetized on app1
SELECT sum(revenues.app1rev)/count(*) FROM -- people who have installed both apps (SELECT app1.app1s AS install_s, app1.app1utc AS install_utc FROM (SELECT s AS app1s, min(utc_timestamp) AS app1utc FROM <APP1_apa> group by s)app1 FULL OUTER JOIN (SELECT s AS app2s, min(utc_timestamp) AS app2utc FROM <APP2_apa> GROUP BY s)app2 on app1.app1s = app2.app2s where app1.app1s IS NOT NULL AND app2.app2s IS NOT NULL )installs FULL OUTER JOIN -- people who have only monetized on app1 (but may have installed multiple apps) (SELECT app1.app1s AS revenue_s, app1.rev AS app1rev, app1.app1utc AS revenue_utc FROM (SELECT s AS app1s, min(utc_timestamp) AS app1utc, sum(v) AS rev FROM <APP1_mtu> GROUP BY s)app1 FULL OUTER JOIN (SELECT s AS app2s, min(utc_timestamp) AS app2utc FROM <APP2_mtu> GROUP BY s)app2 ON app1.app1s = app2.app2s WHERE app1.app1s IS NOT NULL AND app2.app2s IS NULL )revenues ON installs.install_s = revenues.revenue_s WHERE installs.install_s IS NOT NULL and revenues.revenue_s IS NOT NULL AND kt_date(install_utc)>= <lower_date_in_YYYYMM_format> AND kt_date(revenue_utc)<= <upper_date_in_YYYYMM_format> -- people who have installed app1 and app2 and have generated revenue on app1

Query #4: ARPU on app1 of users who installed both apps but only monetized on app2
SELECT sum(revenues.app2rev)/count(*) FROM -- people who have installed both apps (SELECT app2.app2s AS install_s, app2.app2utc AS install_utc FROM (SELECT s AS app1s, min(utc_timestamp) AS app1utc FROM <APP1_apa> group by s)app1 FULL OUTER JOIN (SELECT s AS app2s, min(utc_timestamp) AS app2utc FROM <APP2_apa> GROUP BY s)app2 on app1.app1s = app2.app2s where app1.app1s IS NOT NULL AND app2.app2s IS NOT NULL )installs FULL OUTER JOIN -- people who have only monetized on app2 (but may have installed multiple apps) (SELECT app2.app2s AS revenue_s, app2.rev AS app2rev, app2.app2utc AS revenue_utc FROM (SELECT s AS app1s, min(utc_timestamp) AS app1utc FROM <APP1_mtu> GROUP BY s)app1 FULL OUTER JOIN (SELECT s AS app2s, min(utc_timestamp) AS app2utc, sum(v) AS rev FROM <APP2_mtu> GROUP BY s)app2 ON app1.app1s = app2.app2s WHERE app1.app1s IS NULL AND app2.app2s IS NOT NULL )revenues ON installs.install_s = revenues.revenue_s WHERE installs.install_s IS NOT NULL and revenues.revenue_s IS NOT NULL AND kt_date(install_utc)>= <lower_date_in_YYYYMM_format> AND kt_date(revenue_utc)<= <upper_date_in_YYYYMM_format> -- people who have installed app1 and app2 and have generated revenue on app2

Query #5: ARPU on app1 of users who Installed and Monetized on both app1 + app2
SELECT sum(app1.app1rev)/count(*) FROM (SELECT s AS app1s, min(utc_timestamp) AS app1utc, sum(v) AS app1rev FROM <APP1_mtu> GROUP BY s)app1 FULL OUTER JOIN (SELECT s AS app2s, min(utc_timestamp) AS app2utc FROM <APP2_mtu> GROUP BY s)app2 ON app1.app1s = app2.app2s WHERE app1.app1s IS NOT NULL and app2.app2s IS NOT NULL AND kt_date(app1.app1utc)>= <lower_date_in_YYYYMM_format> AND kt_date(app1.app1utc)<= <upper_date_in_YYYYMM_format> AND kt_date(app2.app2utc)>= <lower_date_in_YYYYMM_format> AND kt_date(app2.app2utc)<= <upper_date_in_YYYYMM_format> -- ARPU on app1 only for users who monetized on both apps

Query #6: ARPU on app2 of users who installed and monetized on both app1+ app2
SELECT sum(app2.app2rev)/count(*) FROM (SELECT s AS app1s, min(utc_timestamp) AS app1utc FROM <APP1_mtu> GROUP BY s)app1 FULL OUTER JOIN (SELECT s AS app2s, min(utc_timestamp) AS app2utc, sum(v) AS app2rev FROM <APP2_mtu> GROUP BY s)app2 ON app1.app1s = app2.app2s WHERE app1.app1s IS NOT NULL and app2.app2s IS NOT NULL AND kt_date(app1.app1utc)>= <lower_date_in_YYYYMM_format> AND kt_date(app1.app1utc)<= <upper_date_in_YYYYMM_format> AND kt_date(app2.app2utc)>= <lower_date_in_YYYYMM_format> AND kt_date(app2.app2utc)<= <upper_date_in_YYYYMM_format> -- ARPU on app1 only for users who monetized on both apps

You might also like