Registro de dados
O registro de dados exige a ativação do MaxCompute, a vinculação de um projeto e o registro de uma tabela do MaxCompute. Essa tabela registrada funciona como uma tabela intermediária para estatísticas de desempenho, denominada tabela source do relatório de experimento. Ela utiliza uma chave primária composta pelos campos user_id, exp_id e campos de dimensão para agregar estatísticas. Cada linha representa métricas como exposições e cliques de um usuário específico em um experimento específico. É possível adicionar dimensões, como país, para criar uma tabela de estatísticas intermediárias mais granular, indexada por user_id, country e exp_id. Todas as métricas básicas e derivadas dependem dessa tabela intermediária. A arquitetura geral do experimento é a seguinte:
O mecanismo PAI-Rec é um service de recomendação que integra um SDK do centro de configuração para recuperar informações do experimento. A resposta inclui o ID do experimento (exp_id) e um ID de solicitação (reqid).
Quando um usuário interage com seu aplicativo, o rastreamento de eventos no front-end coleta logs de comportamento e os envia ao MaxCompute. Uma tarefa SQL processa esses logs para gerar a tabela source do relatório de experimento. Após configurar as métricas no centro de configuração, o sistema monta dinamicamente consultas SQL para calcular estatísticas a partir dessa tabela source. Os resultados são armazenados no Hologres e podem ser visualizados na página de relatório do experimento.
I. Relatórios de experimento offline
Código da tabela source do relatório de experimento offline
CREATE TABLE IF NOT EXISTS experiment_report (
user_id STRING COMMENT 'User ID',
exp_id STRING COMMENT 'Experiment ID',
exposure_count BIGINT COMMENT 'Exposure count',
click_count BIGINT COMMENT 'Click count',
like_comment_collect_count BIGINT COMMENT 'Like, comment, and collect count'
)
PARTITIONED by (dt STRING COMMENT 'Date')
STORED AS ALIORC;
INSERT OVERWRITE TABLE experiment_report PARTITION (dt = '${bdp.system.bizdate}')
SELECT user_id
,exp_id
,SUM(IF(event == 'expose',1,0))
,SUM(IF(event == 'click',1,0))
,SUM(IF(event IN ('like','comment','collect'),1,0))
FROM rec_sln_demo_behavior_table_v1
WHERE ds = '${bdp.system.bizdate}'
GROUP BY user_id
,exp_id
Schema da tabela source do relatório de experimento offline
Parâmetro | Descrição | Obrigatório | Observações |
| ID do usuário | Sim | Identificador único do usuário, como UID, |
| ID do experimento | Sim | ID do experimento retornado pelo service de teste A/B e registrado via rastreamento de eventos. Se você utilizar seu próprio service de recomendação, poderá definir um identificador personalizado. Exemplo: |
Campo de dimensão | Campo utilizado para relatórios estatísticos mais granulares. | Não | Utilize este campo para agrupar e exibir as métricas correspondentes. Por exemplo, adicione um campo É possível especificar até dois campos de dimensão, como Um campo de dimensão comum é |
Campo de cálculo | Podem existir múltiplos campos de cálculo. Exemplo: Exemplo: | Sim | Campo numérico fornecido por você, como contagem de exposições, contagem de cliques ou duração de visualização. |
| Partição de data | Sim | Formato: |
| Partição de hora | Não | Formato de 24 horas: |
| Partição de minuto | Não |
|
Dependendo das necessidades do seu negócio, gere a tabela source diariamente para relatórios offline ou horariamente para relatórios quase em tempo real. Por exemplo, utilize o DataWorks para agendar um job executado a cada hora para processar os logs da hora anterior. Para geração offline, user_id, exp_id e dt são obrigatórios. Para relatórios horários, user_id, exp_id, dt e hh são necessários; a partição mm é opcional.
Uma source de dados em tempo real suporta métricas offline e em tempo real. Já uma source de dados offline suporta apenas métricas offline.
Os campos de dimensão são opcionais, mas permitem a análise dimensional das suas métricas. Campos comuns incluem gender e os (sistema operacional, como iOS ou Android), possibilitando a visualização dos dados do relatório segmentados por gênero ou sistema operacional.
Código da tabela source do relatório de significância offline
CREATE TABLE IF NOT EXISTS experiment_report_v3 (
user_id STRING COMMENT 'User ID',
exp_id STRING COMMENT 'Experiment ID',
item_id STRING COMMENT 'Item ID',
request_id STRING COMMENT 'Request ID',
click_uv BIGINT COMMENT 'Click UV',
expr_pv BIGINT COMMENT 'Exposure PV'
)
PARTITIONED by (dt STRING COMMENT 'Date')
STORED AS ALIORC;
INSERT OVERWRITE TABLE experiment_report_v3 PARTITION (dt = '${bdp.system.bizdate}')
SELECT
user_id,
exp_id,
item_id,
request_id,
MAX(IF(event = 'click', 1, 0)) AS click_uv,
SUM(IF(event = 'expr', 1, 0)) AS expr_pv
FROM rec_sln_demo_behavior_table_v1
WHERE ds = '${bdp.system.bizdate}'
GROUP BY
user_id,
exp_id,
item_id,
request_id
Schema da tabela source do relatório de significância offline
Parâmetro | Descrição | Obrigatório | Observações |
| ID do usuário | Sim | Identificador único do usuário, como UID, |
| ID do experimento | Sim | ID do experimento retornado pelo service de teste A/B e registrado via rastreamento de eventos. Se você utilizar seu próprio service de recomendação, poderá definir um identificador personalizado. Exemplo: |
| ID do item | Sim | |
| ID da solicitação | Sim | |
Campo de dimensão | Campo utilizado para relatórios estatísticos mais granulares. | Não | Utilize este campo para agrupar e exibir as métricas correspondentes. Por exemplo, adicione um campo É possível especificar até dois campos de dimensão, como Um campo de dimensão comum é |
Campo de cálculo | Podem existir múltiplos campos de cálculo. Exemplo: Exemplo: | Sim | Campo numérico fornecido por você, como contagem de exposições ou contagem de cliques. |
| Partição de data | Sim | Formato: |
II. Relatórios de experimento em tempo real
Código da tabela source do relatório de experimento em tempo real
CREATE TABLE IF NOT EXISTS experiment_report_real (
user_id STRING COMMENT 'User ID',
exp_id STRING COMMENT 'Experiment ID',
exposure_count BIGINT COMMENT 'Exposure count',
click_count BIGINT COMMENT 'Click count',
like_comment_collect_count BIGINT COMMENT 'Like, comment, and collect count'
)
PARTITIONED by (
dt string
,hh string
)
STORED AS ALIORC;
INSERT OVERWRITE TABLE experiment_report_real PARTITION (dt = '${bdp.system.bizdate}',hh = '${hour}')
SELECT user_id
,exp_id
,SUM(IF(event == 'expose',1,0))
,SUM(IF(event == 'click',1,0))
,SUM(IF(event IN ('like','comment','collect'),1,0))
FROM rec_sln_demo_behavior_table_v1
WHERE ds = '${bdp.system.bizdate}'
AND hh = hour(now()) -1
GROUP BY user_id
,exp_id;
Schema da tabela source do relatório de experimento em tempo real
|
Parâmetro |
Descrição |
Obrigatório |
Observações |
|
user_id |
ID do usuário |
Sim |
Identificador único do usuário, como UID, device_id ou IMEI. |
|
exp_id |
ID do experimento |
Sim |
ID do experimento retornado pelo service de teste A/B e registrado via rastreamento de eventos. Se você utilizar seu próprio service de recomendação, poderá definir um identificador personalizado. Exemplo: ER1_L1#EG1#E1_L2#EG2#E2 |
|
Campo de dimensão |
Exemplo: os (sistema operacional). |
Não |
Utilizado para filtrar os dados do relatório por esta dimensão. |
|
Campo de cálculo |
Podem existir múltiplos campos de cálculo. Exemplo: exposure_count, click_count. |
Sim |
Campo numérico fornecido por você, como contagem de exposições, contagem de cliques ou duração de visualização. |
|
dt |
Partição de data |
Sim |
Formato: yyyyMMdd |
|
hh |
Partição de hora |
Sim |
Formato de 24 horas: 00 a 23. |
|
mm |
Partição de minuto |
Não |
00 a 59. |
Os campos na tabela de resultados são majoritariamente fixos; apenas os campos de dimensão são variáveis. A definição de um campo de dimensão na tabela de resultados deve corresponder exatamente à sua definição na tabela source.
Métricas offline e em tempo real não podem compartilhar a mesma tabela de resultados. Uma tabela de resultados para métricas offline requer apenas a partição de data dt, enquanto uma tabela em tempo real deve incluir pelo menos a partição de hora hh.
Após criar a tabela source do relatório de experimento, acesse Metric Management > Data Registration no console para adicionar a nova tabela de dados do MaxCompute.
Recomendamos o uso da tabela padrão do Hologres para armazenar os resultados do cálculo de métricas. Essa opção não consome seus próprios resources, pois o sistema cria e gerencia a tabela automaticamente. Alternativamente, utilize sua própria instância e tabela do Hologres.
III. Registrar uma tabela do MaxCompute
Clique em Create Data Table, selecione seu projeto vinculado do MaxCompute, escolha a tabela de dados do MaxCompute, forneça um nome personalizado e clique em Start Import para importar os dados da tabela.
Se o schema de uma tabela de dados registrada for alterado, reimporte-a imediatamente. Caso contrário, o sistema pode não reconhecer as mudanças nos campos.
Configuração de campos
Após o registro, a tabela de dados aparece na lista. Clique em View Fields para revisar e editar os campos. Os campos user_id, exp_id e dt são obrigatórios. Juntos, esses campos rastreiam totais de comportamento, como exposições, cliques e curtidas de um usuário específico (user_id) em um experimento específico (exp_id) em um determinado dia (dt). Métricas personalizadas são definidas e calculadas com base nesta tabela.
Campos de dimensão
Adicione um ou dois campos de dimensão à tabela. Por exemplo, se você definir city como dimensão, o relatório de experimento exibirá uma comparação dos resultados para cada cidade. Se definir tanto city quanto gender como campos de dimensão, o relatório mostrará os resultados agrupados pela combinação desses dois campos.
Instruções
Leia o conteúdo em inglês para compreender O QUE precisa ser comunicado
Escreva o português brasileiro DO ZERO — esqueça a estrutura das frases em inglês
Preserve toda a formatação markdown, blocos de código, links e imagens exatamente como estão
Copie os placeholders xref (
{XREF_N}) literalmente, sem traduzir ou modificarAplique todas as regras específicas de idioma rigorosamente
Aplique as regras de stopwords com tolerância zero
Use o modo imperativo em passos numerados e listas de procedimentos
Garanta a consistência terminológica — o mesmo termo deve ter a mesma tradução em todo o documento
Varie os inícios de frase em listas e tabelas — nenhum iniciador deve se repetir 3 vezes ou mais
Retorne APENAS o documento markdown em português brasileiro, sem explicações