Il registro eventi di iscrizione fa parte di Slate Analytics, il nostro nuovo prodotto di dati per i partner. Il registro eventi di iscrizione si differenzia da altri report di Slate in diversi modi:
- È a sola aggiunta (ogni file contiene nuovi dati)
- Non è disponibile per il download nell’interfaccia utente (accessibile solo tramite API)
- È stato creato esplicitamente per i data engineer dei partner e consente loro di usufruire di dati granulari per eseguire analisi
Questo argomento aiuta i data engineer a configurare le proprie pipeline per recuperare i dati del registro eventi di iscrizione, definisce i valori nei file del registro eventi di iscrizione e fornisce query di esempio e suggerimenti per un utilizzo ottimale di questi dati da parte dei partner.
Per iniziare, consulta le linee guida nella Guida all’integrazione delle API. Per maggiori informazioni sui report che puoi ottenere da Slate, consulta la Documentazione dell’API di report.
Inserire i dati del registro eventi di iscrizione
Per accedere a questi dati devi avere:
- Un profilo di sicurezza Login with Amazon
- Un codice di autorizzazione per richiedere un token
- Un token per tutte le richieste curl
Prime Video pubblica nuovi file di registro degli eventi di iscrizione ogni giorno, alle 23:59 UTC. Questi registri possono contenere dati fino a 12 ore precedenti. Se dovessimo riscontrare un ritardo, lo comunicheremo via e-mail il prima possibile.
Un elenco dei registri degli eventi di iscrizione è disponibile al seguente URL curl:
https://videocentral.amazon.com/apis/v1/accounts/{account_id}/channelsAnalyticsLogs/{channel/studio_id}/reportTypes/amzn1.vcpa.arcs.insight.29fb1b79-9aa1-4732-9ebb-4befccbeb09a/reports
Utilizza i seguenti parametri di richiesta:{
limit: {The number of reports returned in a single request (the page size).},
offset: {The number of pages to skip (the page number).},
modifiedDateGte: {UTC timezone since you last pull}
}
Il codice seguente mostra un esempio di risposta a questa richiesta.
{
"next":{link to next request},
"total":{num of reports},
"data":
[
{
"downloadUrl":"{presigned url}",
"numRows":{num of rows},
"reportDateBegin":"2024-07-18",
"reportDateEnd":"2024-07-19",
"modifiedDate":"2024-07-23T17:24:29.312Z",
"name":"Channels Persistent CID Subscription Event Log",
"cadence":"Daily"}
]
}
Usa il downloadURL per scaricare il file CSV.
Usa questi link per trovare il tuo account_id o il tuo channel/studio_id.
Gestire dati nuovi e modificati
Forniamo dati ai consumatori sotto forma di changelog. Ogni evento di iscrizione viene pubblicato una sola volta. Tuttavia, se è necessario aggiornare i valori delle colonne per una riga fornita in precedenza, pubblicheremo una nuova versione del record per riflettere le modifiche nel successivo file disponibile. Il changelog è a sola aggiunta, per garantire che tutte le modifiche ai dati vengano acquisite. I data engineer possono utilizzare questo changelog per aggiornare direttamente le tabelle dei dati delle iscrizioni.
Quando elabori il changelog, è essenziale utilizzare sempre il record più recente per un determinato subscription_event_id, basato sulla colonna last_update_time_utc. Questo assicura di avere sempre la versione più aggiornata di ogni record. Se è necessario eliminare un record, questa azione viene riportata nella colonna is_deleted. Il valore 1 indica che il record è stato eliminato, mentre il valore 0 rappresenta un record attivo.
Questo approccio basato sul changelog consente di gestire in modo efficace i dati nuovi e quelli che vengono modificati e garantisce che le tabelle dei dati delle iscrizioni rimangano accurate e aggiornate con le informazioni più recenti.
Definizioni delle colonne
La tabella seguente definisce le colonne e i valori che vedrai nei registri degli eventi delle iscrizioni.
Colonna |
Definizione |
subscription_event_id |
ID univoco per ogni evento di iscrizione venduto attraverso questo registro. |
subscription_event_type |
Il tipo di evento di iscrizione che si è verificato.
|
subscription_event_time_utc |
L’ora in cui si è verificato l’evento di iscrizione, standardizzata in UTC |
subscription_event_time_zone |
Il fuso orario del marketplace dell’iscrizione. |
cid |
Identificativo del cliente anonimo. Questo identificativo del cliente (CID) persisterà per tutti gli eventi in un unico canale principale per consentire la movimentazione tra i vari livelli e il monitoraggio del ciclo di vita del cliente. |
offer_id |
L’ID dell’offerta di iscrizione specifica in relazione alla quale si è verificato l’evento. |
offer_name |
Il nome leggibile dell’offerta. |
offer_type |
Il tipo di offerta. |
offer_marketplace |
Il marketplace in cui era attiva l’offerta di iscrizione. |
offer_billing_type |
Il tipo di pagamento richiesto per l’offerta.
|
offer_payment_amount |
L’importo di fatturazione dell’offer_id. |
benefit_id |
L’ID del vantaggio Prime Video in base al quale è configurata l’offerta. |
channel_label |
Il nome del canale in cui si trova l’offerta. Nota: se questa colonna mostra un valore nullo, potresti dover accedere a Slate Analytics. Per raggruppare offerte o livelli sotto un’unica etichetta di canale, contatta il tuo CAM o il PsM. |
channel_tier_label |
Il nome del canale in cui si trova l’offerta. Nota: se questa colonna mostra un valore nullo, potresti dover accedere a Slate Analytics. Per raggruppare le offerte in un unico livello, contatta il tuo CAM o PsM. |
is_promo |
Indica se un’offerta è in promozione al momento dell’evento (0 = nessuna promozione, 1 = promozione attiva). |
create_time_utc |
L’ora di creazione del record del registro eventi di iscrizione, standardizzato in UTC. |
last_update_time_utc |
L’ora dell’ultimo aggiornamento del record del registro eventi di iscrizione, standardizzata in UTC. |
is_deleted |
Indica se un record creato in precedenza deve essere eliminato (0 = deve persistere, 1 = deve essere eliminato). |
Casi d’uso comuni
Con i dati forniti nel registro eventi di iscrizione, puoi facilmente mappare i percorsi dei singoli clienti con dettagli granulari o aggregare i dati per ottenere metriche fondamentali come la fidelizzazione.
Le sezioni seguenti forniscono alcuni casi d’uso comuni e query di esempio per sfruttare questo set di dati.
Nota: tutte queste query di esempio sono state scritte per funzionare con AWS Athena. Per questi esempi, la tabella centrale del registro eventi di iscrizione è denominata tahoe_cleansed.subs_event_obt.
Numero totale di iscritti alla fine del periodo misurato
La seguente query fornisce il numero di iscrizioni alla fine di giugno 2024. Tutti i timestamp UTC sono convertiti nel fuso orario locale.WITH main AS (
SELECT
a.cid,
a.offer_id,
SPLIT(a.offer_id, '-')[1] as offer_group_id,
cast(from_iso8601_timestamp(date_format(at_timezone(a.subscription_event_time_utc, a.subscription_event_time_zone), '%Y-%m-%dT%H:%i:%s')) as timestamp) AS curr_subscription_event_time,
a.subscription_event_type AS curr_event_type,
LEAD(a.subscription_event_type) OVER (
PARTITION BY a.encrypted_customer_id, SPLIT(a.offer_id, '-')[1]
ORDER BY cast(from_iso8601_timestamp(date_format(at_timezone(a.subscription_event_time_utc, a.subscription_event_time_zone), '%Y-%m-%dT%H:%i:%s')) as timestamp)
) AS next_event_type,
LEAD(cast(from_iso8601_timestamp(date_format(at_timezone(a.subscription_event_time_utc, a.subscription_event_time_zone), '%Y-%m-%dT%H:%i:%s')) as timestamp)) OVER (
PARTITION BY a.encrypted_customer_id, SPLIT(a.offer_id, '-')[1]
ORDER BY cast(from_iso8601_timestamp(date_format(at_timezone(a.subscription_event_time_utc, a.subscription_event_time_zone), '%Y-%m-%dT%H:%i:%s')) as timestamp)
) AS next_subscription_event_time
FROM
tahoe_cleansed.subs_event_obt a
WHERE
a.subscription_event_type IN ('Start', 'Renewal', 'Cancel')
)
SELECT
offer_id,
COUNT(DISTINCT cid || offer_group_id) AS month_end_subscriptions
FROM
main
WHERE
(curr_event_type IN ('Renewal', 'Start') AND next_event_type IS NULL AND
curr_subscription_event_time < CAST('2024-07-01' as timestamp)) -- Currently active subscriptions
OR (
curr_event_type IN ('Renewal', 'Start')
AND curr_subscription_event_time < CAST('2024-07-01' AS TIMESTAMP)
AND next_event_type = 'Cancel'
AND next_subscription_event_time >= CAST('2024-07-01' AS TIMESTAMP)
) -- Active before end of month, cancelled after month end
OR (
curr_event_type IN ('Renewal', 'Start')
AND next_event_type IN ('Renewal', 'Start')
AND curr_subscription_event_time < CAST('2024-07-01' AS TIMESTAMP)
AND next_subscription_event_time >= CAST('2024-07-01' AS TIMESTAMP)
) -- Capture all active who stayed active and renewed after the month end
GROUP BY
offer_id;
Totale iscrizioni a pagamento alla fine del periodo misurato
La seguente query fornisce il numero di iscrizioni a pagamento alla fine di giugno 2024. Tutti i timestamp UTC sono convertiti nel fuso orario locale.WITH main AS (
SELECT
a.cid,
a.offer_id,
SPLIT(a.offer_id, '-')[1] as offer_group_id,
cast(from_iso8601_timestamp(date_format(at_timezone(a.subscription_event_time_utc, a.subscription_event_time_zone), '%Y-%m-%dT%H:%i:%s')) as timestamp) AS curr_subscription_event_time,
a.subscription_event_type AS curr_event_type,
LEAD(a.subscription_event_type) OVER (
PARTITION BY a.encrypted_customer_id, SPLIT(a.offer_id, '-')[1]
ORDER BY cast(from_iso8601_timestamp(date_format(at_timezone(a.subscription_event_time_utc, a.subscription_event_time_zone), '%Y-%m-%dT%H:%i:%s')) as timestamp)
) AS next_event_type,
LEAD(cast(from_iso8601_timestamp(date_format(at_timezone(a.subscription_event_time_utc, a.subscription_event_time_zone), '%Y-%m-%dT%H:%i:%s')) as timestamp)) OVER (
PARTITION BY a.encrypted_customer_id, SPLIT(a.offer_id, '-')[1]
ORDER BY cast(from_iso8601_timestamp(date_format(at_timezone(a.subscription_event_time_utc, a.subscription_event_time_zone), '%Y-%m-%dT%H:%i:%s')) as timestamp)
) AS next_subscription_event_time
FROM
tahoe_cleansed.subs_event_obt a
WHERE
a.subscription_event_type IN ('Start', 'Renewal', 'Cancel').
and offer_billing_type = 'HO'
)
SELECT
offer_id,
COUNT(DISTINCT cid || offer_group_id) AS month_end_subscriptions
FROM
main
WHERE
(curr_event_type IN ('Renewal', 'Start') AND next_event_type IS NULL AND
curr_subscription_event_time < CAST('2024-07-01' as timestamp)) -- Currently active subscriptions
OR (
curr_event_type IN ('Renewal', 'Start')
AND curr_subscription_event_time < CAST('2024-07-01' AS TIMESTAMP)
AND next_event_type = 'Cancel'
AND next_subscription_event_time >= CAST('2024-07-01' AS TIMESTAMP)
) -- Active before end of month, cancelled after month end
OR (
curr_event_type IN ('Renewal', 'Start')
AND next_event_type IN ('Renewal', 'Start')
AND curr_subscription_event_time < CAST('2024-07-01' AS TIMESTAMP)
AND next_subscription_event_time >= CAST('2024-07-01' AS TIMESTAMP)
) -- Capture all active who stayed active and renewed after the month end
GROUP BY
offer_id;
Nuovi iscritti in giugno 2024
La seguente query fornisce il numero di nuovi iscritti tra il June1° giugno e il 1° luglio 2024.-- New Subscribers
SELECT
offer_id, COUNT(DISTINCT cid) AS new_subscribers
FROM
tahoe_cleansed.subs_event_obt
WHERE
subscription_event_type = 'Start'
AND subscription_event_time_utc >= CAST('2024-06-01' AS TIMESTAMP)
AND subscription_event_time_utc < CAST('2024-07-01' AS TIMESTAMP)
GROUP BY offer_id;
Eventi annullati
La seguente query fornisce il numero totale di iscrizioni annullate tra il 1° giugno e il 1° luglio 2024.
SELECT
count(distinct cid || offer_id)
FROM
tahoe_cleansed.subs_event_obt
WHERE subscription_event_type = 'Cancel'
AND subscription_event_time_utc >= CAST('2024-06-01' AS TIMESTAMP)
AND subscription_event_time_utc < CAST('2024-07-01' AS TIMESTAMP)
Conversioni del periodo d’uso gratuito a offerta a pagamento nel giugno 2024
La seguente query fornisce il numero totale di clienti con periodo d’uso gratuito che si sono convertiti a un’offerta a pagamento nel giugno 2024.
WITH events AS (
SELECT
subscription_event_id,
cid,
offer_id,
offer_billing_type,
subscription_event_type,
subscription_event_time_utc,
CASE
WHEN subscription_event_type = 'Start' or subscription_event_type = 'Renewal' THEN 1
ELSE 0
END AS is_active,
ROW_NUMBER() OVER (PARTITION BY cid, offer_id ORDER BY subscription_event_time_utc DESC) AS rn
FROM
tahoe_cleansed.subs_event_obt
WHERE
subscription_event_time_utc >= CAST('2024-06-01' AS TIMESTAMP)
AND subscription_event_time_utc < CAST('2024-07-01' AS TIMESTAMP)
),
ft_events AS (
SELECT
cid,
offer_id,
min(subscription_event_time_utc) as ft_event_time
from events
group by cid,
offer_id
),
ho_events AS (
SELECT
cid,
offer_id,
subscription_event_time_utc as ho_event_time
FROM
events
WHERE
rn = 1 and offer_billing_type = 'HO' and is_active = 1
),
conversions as (select a.cid,
a.offer_id,
a.ft_event_time,
b.ho_event_time
from ft_events a
inner join ho_events b on a.cid = b.cid and a.offer_id = b.offer_id
where b.ho_event_time > a.ft_event_time)
select count(distinct cid || offer_id) as num_conversions
from conversions;
Cambio di livello del cliente da Offer_ID1 a Offer_ID2
La seguente query fornisce il numero totale di clienti che hanno cambiato il proprio livello di iscrizione all’interno di un canale principale.
with first_offer as (
select cid,min(subscription_event_time_utc) as first_offer_time
from tahoe_cleansed.subs_event_obt
where subscription_event_type in ('Start','Renewal')
and offer_id = 'offer_id1'
group by cid
),
second_offer as (
select cid,min(subscription_event_time_utc) as second_offer_time
from tahoe_cleansed.subs_event_obt
where subscription_event_type in ('Start','Renewal')
and offer_id = 'offer_id2'
group by cid
)
select distinct a.cid
from first_offer a
inner join second_offer b on a.cid = b.cid
where b.second_offer_time > a.first_offer_time;