O Registro de Eventos de Assinatura faz parte do Slate Analytics, nosso novo produto de dados de parceiros. O registro de eventos de assinatura é diferente de outros relatórios do Slate em vários aspectos:
- é somente para anexar (cada arquivo tem novos dados).
- Não está disponível para download na interface do usuário (pode ser acessado somente por meio da API).
- Ele foi criado explicitamente para engenheiros de dados parceiros e permite que eles consumam dados granulares para realizar análises. Este tópico ajuda os engenheiros de dados a configurar seus pipelines para
recuperar dados do registro de eventos de assinatura, define os valores nos arquivos de registro de eventos de assinatura e fornece exemplos de consultas e sugestões para a melhor maneira de os parceiros usarem esses dados.
Para começar, confira as diretrizes no guia de integração da API. Para obter mais informações sobre os relatórios que você pode obter do Slate, consulte a documentação da API de relatórios.
Insira os dados de registro de eventos de assinatura
Para acessar esses dados, você deve ter:
- Um login com o Amazon Security Profile
- Um código de autorização para solicitar um token
- Um token para todas as solicitações curl
O Prime Video publica novos arquivos de registro de eventos de assinatura diariamente, às 23h59 UTC. Esses registros podem conter dados de até 12 horas antes. Se houver algum atraso, nos comunicaremos por e-mail o mais rápido possível.
Uma lista de registros de eventos de assinatura está disponível no seguinte 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
Use os seguintes parâmetros de solicitação:{
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}
}
O código a seguir mostra um exemplo de resposta a essa solicitação.
{
"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"}
]
}
Use o URL de download para baixar o arquivo CSV.
Use esses links para encontrar seu account_id ou seu canal/studio_id.
Gerencie dados novos e em mudança
Fornecemos dados aos consumidores na forma de um changelog. Cada evento de assinatura é publicado apenas uma vez. No entanto, se algum valor de coluna de uma linha fornecida anteriormente precisar ser atualizado, publicaremos uma nova versão do registro para refletir as alterações em seu próximo arquivo disponível. O changelog é somente para anexação, para garantir que todas as modificações de dados sejam capturadas. Os engenheiros de dados podem usar esse changelog para atualizar diretamente suas tabelas de dados de assinatura.
Ao processar o changelog, é essencial sempre usar o registro mais recente de um determinado subscription_event_id, com base na coluna last_update_time_utc. Isso garante que você sempre tenha a versão mais atualizada de cada registro. Se um registro precisar ser excluído, essa ação será refletida na coluna is_deleted. Um valor de 1 indica que o registro foi excluído, enquanto um valor de 0 representa um registro ativo.
Essa abordagem de registro de alterações permite que você gerencie com eficácia dados novos e alterados e garante que suas tabelas de dados de assinatura permaneçam precisas e atualizadas com as informações mais recentes.
Definições de coluna
A tabela a seguir define as colunas e os valores que você verá nos registros de eventos de assinatura.
Coluna |
Definição |
subscription_event_id |
ID exclusivo para cada evento de assinatura distribuído por meio deste registro. |
subscription_event_type |
O tipo de evento de assinatura que ocorreu.
|
subscription_event_time_utc |
A hora em que o evento de assinatura ocorreu, padronizado em UTC. |
subscription_event_time_zone |
O fuso horário do mercado de assinaturas. |
cid |
Identificador de cliente anônimo. Esse identificador de cliente (CID) persistirá em todos os eventos em um único canal principal para permitir a movimentação entre camadas e o rastreamento do ciclo de vida do cliente. |
offer_id |
O ID da oferta de assinatura específica em relação à qual o evento ocorreu. |
| offer_name O nome |
da oferta legível por humanos. |
offer_type |
O tipo de oferta. |
| offer_marketplace O mercado |
em que a oferta de assinatura estava ativa. |
| offer_billing_type |
O tipo de pagamento exigido para a oferta.
|
offer_payment_amount |
O valor da cobrança do offer_id. |
benefit_id |
O ID do benefício Prime Video sob o qual a oferta está configurada. |
channel_label |
O nome do canal em que a oferta está inserida. Observação: se essa coluna mostrar um valor nulo, talvez você precise se integrar ao Slate Analytics. Para agrupar ofertas ou patamares em um único rótulo de canal, entre em contato com seu CAM ou PsM. |
channel_tier_label |
O nome do canal em que a oferta está inserida. Observação: se essa coluna mostrar um valor nulo, talvez você precise se integrar ao Slate Analytics. Para agrupar ofertas em um único nível, entre em contato com seu CAM ou PsM. |
is_promo |
Indica se uma oferta está em promoção no momento do evento (0= sem promoção, 1 = sim promoção). |
| create_time_utc |
A hora em que o registro do log de eventos da assinatura foi criado, padronizado para UTC. |
last_update_time_utc |
A hora em que o registro do registro de eventos da assinatura foi atualizado pela última vez, padronizado para UTC. |
is_deleted |
Indica se um registro criado anteriormente deve ser excluído (0=deve persistir, 1= deve ser excluído). |
Casos de uso comuns
Com os dados fornecidos no Registro de Eventos de Assinatura, você pode facilmente mapear as jornadas individuais dos clientes em detalhes granulares ou agregar os dados para métricas principais, como retenção.
As seções a seguir fornecem alguns casos de uso comuns e exemplos de consultas para aproveitar esse conjunto de dados.
Observação: todos esses exemplos de consultas foram escritos para funcionar com o AWS Athena. A tabela central de registro de eventos de assinatura é chamada de tahoe_cleansed.subs_event_obt para esses exemplos.
Total de assinantes no final do períodomedido
A consulta a seguir fornece o número de assinaturas no final de junho de 2024. Todos os timestamps UTC são convertidos para o fuso horário local.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)
) -- Ativo antes do final do mês, cancelado após o final do mês
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 todos os ativos que permaneceram ativos e renovaram após o final do mês
GROUP BY
offer_id;
Total de assinaturas pagas no final do período medido
A consulta a seguir fornece o número de assinaturas pagas no final de junho de 2024. Todos os timestamps UTC são convertidos para o fuso horário local.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)
) -- Ativo antes do final do mês, cancelado após o final do mês
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 todos os ativos que permaneceram ativos e renovaram após o final do mês
GROUP BY
offer_id;
Novos assinantes em junho de 2024
A consulta a seguir fornece o número de assinaturas pagas no final de 1º de junho e 1º de julho de 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;
Eventos cancelados
A consulta a seguir fornece o número de assinaturas canceladas no final de 1º de junho e 1º de julho de 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)
Conversões de teste gratuito para HO em junho 2024
A consulta a seguir fornece o número de clientes de teste gratuito que se converteram para ofertas concretas em julho de 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;
Patamar de clientes que mudaram da Offer_ID1 para Offer_ID2
A consulta a seguir fornece o número de clientes que mudaram seu patamar de assinatura em um canal Parent.
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;