Ingerir dados do Reddit Ads
Beta
Esse recurso está em Beta. Administradores do Workspace podem controlar o acesso a este recurso na página **Pré-visualizações**. Consulte Gerenciar prévias do Databricks.
Saiba como criar um pipeline de ingestão gerenciado para ingerir dados do Reddit Ads no Databricks.
Requisitos
-
Para criar um pipeline de ingestão, é preciso atender aos seguintes requisitos:
-
Seu workspace deve estar habilitado para o Unity Catalog.
-
O compute serverless deve ser habilitado para o seu workspace. Consulte requisitos de Computação serverless.
-
Para criar uma nova conexão, você deve ter privilégios
CREATE CONNECTIONno metastore. Consulte Gerenciar privilégios no Unity Catalog.Se o conector suportar a criação de pipeline baseada em IU, um administrador poderá criar a conexão e o pipeline ao mesmo tempo, concluindo os passos desta página. No entanto, se os usuários que criam pipelines usarem a criação de pipelines baseada em API ou forem usuários não administradores, um administrador deve primeiro criar a conexão no Catalog Explorer. Consulte Conectar-se a fontes de ingestão gerenciadas.
-
Para usar uma conexão existente, é preciso ter os privilégios
USE CONNECTIONouALL PRIVILEGESno objeto de conexão. -
Você deve ter privilégios
USE CATALOGno catálogo de destino. -
É necessário ter privilégios
USE SCHEMAeCREATE TABLEem um esquema existente ou privilégiosCREATE SCHEMAno catálogo de destino.
-
-
Para fazer a ingestão de dados do Reddit Ads, você deve concluir os passos em Criar uma conexão com o Reddit Ads.
Esquemas de Origem
Reddit Ads organiza tabelas em esquemas de origem (espaços de nomes):
- A tabela de entidade
ad_accountestá no esquema especialdefault(source_schema: "default"). Ele lista as contas de anúncios acessíveis ao usuário autenticado. - Todas as tabelas com escopo de conta —
campaign,ad_group,ade todas as tabelas de relatório — estão em um esquema nomeado pelo ID da conta de anúncio (source_schema: "<ad_account_id>").
Criar um pipeline de ingestão
- Databricks UI
- Declarative Automation Bundles
- Databricks notebook
- Na barra lateral do Databricks Workspace, clique em Ingestão de Dados .
- Na página **Adicionar dados**, em **Conectores Databricks**, clique em **Reddit Ads**.
- Na página **Conexão** do assistente de ingestão, selecione a conexão que armazena suas credenciais de acesso do Reddit Ads. Caso tenha o
CREATE CONNECTIONprivilégio no metastore, pode clicar em** Criar conexão** para criar uma nova conexão com os detalhes de autenticação em Criar uma conexão do Reddit Ads.
- Clique em Avançar .
- Na página Configuração da ingestão , insira um nome exclusivo para o pipeline.
- Selecione um catálogo e um esquema para gravar Logs de eventos. Se você tiver os privilégios
USE CATALOGeCREATE SCHEMAno catálogo, você pode clicar emCriar esquema no menu suspenso para criar um novo esquema.
- Clique em **Criar pipeline e continuar**.
- Na página **Source**, selecione as tabelas para ingestão.
- Clique em Salvar e continuar .
- Na página Destino , selecione um catálogo e um esquema para carregar os dados. Se você tiver privilégios
USE CATALOGeCREATE SCHEMAno catálogo, você pode clicar emCriar esquema no menu suspenso para criar um novo esquema.
- Clique em Salvar e continuar .
- (Opcional) Na página Agendamentos e notificações , clique em
Criar agendamento . Defina a frequência para refresh as tabelas de destino.
- (Opcional) Clique em
Adicionar notificação para definir notificações por email para sucesso ou falha da operação do pipeline e, em seguida, clique em Salvar e executar pipeline .
Esta tab descreve como implantar um pipeline de ingestão usando Pacotes de Automação Declarativa. Os pacotes podem conter definições YAML de Jobs e tarefas, são gerenciados usando a CLI do Databricks e podem ser compartilhados e executados em diferentes Workspaces de destino (como desenvolvimento, preparo e produção). Para obter mais informações, consulte O que são Pacotes de Automação Declarativa?.
-
Crie um pacote usando a CLI do Databricks:
Bashdatabricks bundle init -
Adicione dois novos arquivos de recurso ao pacote:
- Um arquivo de definição de pipeline (por exemplo,
resources/reddit_ads_pipeline.yml). - Um arquivo de definição de Job que controla a frequência da ingestão de dados (por exemplo,
resources/reddit_ads_job.yml).
Consulte pipeline.ingestion_definition e Exemplos.
- Um arquivo de definição de pipeline (por exemplo,
-
Implante o pipeline usando a CLI do Databricks:
Bashdatabricks bundle deploy
- Importe o seguinte Notebook para seu Workspace Databricks:
-
Deixe a célula um como está.
-
Modifique a célula dois com os detalhes da configuração do seu pipeline, dependendo do seu caso de uso. Veja Exemplos.
-
Clique em Executar tudo .
Exemplos
- Declarative Automation Bundles
- Databricks notebook
O seguinte arquivo de definição de pipeline ingere todas as tabelas atuais e futuras com escopo de account de uma ad account:
resources:
pipelines:
pipeline_reddit_ads:
name: <pipeline-name>
catalog: <destination-catalog>
target: <destination-schema>
ingestion_definition:
connection_name: <connection-name>
objects:
- schema:
source_schema: <ad-account-id>
destination_catalog: <destination-catalog>
destination_schema: <destination-schema>
connector_options:
reddit_ads_options:
sync_start_date: <sync-start-date>
lookback_window_days: <lookback-window-days>
O seguinte arquivo de definição de pipeline seleciona tabelas específicas de uma account:
resources:
pipelines:
pipeline_reddit_ads:
name: <pipeline-name>
catalog: <destination-catalog>
target: <destination-schema>
ingestion_definition:
connection_name: <connection-name>
objects:
- table:
source_schema: default
source_table: ad_account
destination_catalog: <destination-catalog>
destination_schema: <destination-schema>
- table:
source_schema: <ad-account-id>
source_table: campaign_report
destination_catalog: <destination-catalog>
destination_schema: <destination-schema>
destination_table: <destination-table>
connector_options:
reddit_ads_options:
sync_start_date: <sync-start-date>
lookback_window_days: <lookback-window-days>
A seguir, um exemplo de arquivo de definição de Job:
resources:
jobs:
reddit_ads_dab_job:
name: reddit_ads_dab_job
trigger:
periodic:
interval: 1
unit: DAYS
email_notifications:
on_failure:
- <email-address>
tasks:
- task_key: refresh_pipeline
pipeline_task:
pipeline_id: ${resources.pipelines.pipeline_reddit_ads.id}
A especificação de pipeline a seguir ingere todas as tabelas com escopo de conta atuais e futuras de uma conta de anúncios. Para também ingerir a tabela ad_account, adicione um segundo objeto com "source_schema": "default".
pipeline_spec = {
"name": "<pipeline-name>",
"ingestion_definition": {
"connection_name": "<connection-name>",
"objects": [
{
"schema": {
"source_schema": "<ad-account-id>",
"destination_catalog": "<destination-catalog>",
"destination_schema": "<destination-schema>",
"connector_options": {
"reddit_ads_options": {
"sync_start_date": "2024-01-01",
"lookback_window_days": 30
}
}
}
}
]
}
}
json_payload = json.dumps(pipeline_spec, indent=2)
create_pipeline(json_payload)
A seguinte especificação de pipeline seleciona tabelas específicas de uma account:
pipeline_spec = {
"name": "<pipeline-name>",
"ingestion_definition": {
"connection_name": "<connection-name>",
"objects": [
{
"table": {
"source_schema": "default",
"source_table": "ad_account",
"destination_catalog": "<destination-catalog>",
"destination_schema": "<destination-schema>"
}
},
{
"table": {
"source_schema": "<ad-account-id>",
"source_table": "campaign_report",
"destination_catalog": "<destination-catalog>",
"destination_schema": "<destination-schema>",
"destination_table": "<destination-table>",
"connector_options": {
"reddit_ads_options": {
"sync_start_date": "2024-01-01",
"lookback_window_days": 30
}
}
}
}
]
}
}
json_payload = json.dumps(pipeline_spec, indent=2)
create_pipeline(json_payload)
Relatórios personalizados
Além das tabelas predefinidas, é possível definir um relatório personalizado que permite escolher as dimensões exatas de detalhamento e os campos de métricas que deseja. Defina source_table como custom_report e forneça a definição do relatório em connector_options.reddit_ads_options.custom_report_options. O nome destination_table é obrigatório para relatórios personalizados.
breakdowns** **: as dimensões a serem agrupadas, por exemplo,,.CAMPAIGN_ID``DATE``COUNTRYvocational education to include at least one time dimension —DATEorHOUR— which becomes the table's incremental cursor.fields: Os campos de métricas a serem selecionados, por exemplo,IMPRESSIONS,CLICKS,SPEND.
Para detalhamentos e campos suportados, consulte Detalhamentos e campos de relatório personalizado.
- Declarative Automation Bundles
- Databricks notebook
resources:
pipelines:
pipeline_reddit_ads_custom:
name: <pipeline-name>
catalog: <destination-catalog>
target: <destination-schema>
ingestion_definition:
connection_name: <connection-name>
objects:
- table:
source_schema: <ad-account-id>
source_table: custom_report
destination_catalog: <destination-catalog>
destination_schema: <destination-schema>
destination_table: my_ad_group_custom_report
connector_options:
reddit_ads_options:
sync_start_date: <sync-start-date>
lookback_window_days: 30
custom_report_options:
breakdowns:
- AD_GROUP_ID
- DATE
fields:
- IMPRESSIONS
- CLICKS
- SPEND
- CTR
pipeline_spec = {
"name": "<pipeline-name>",
"ingestion_definition": {
"connection_name": "<connection-name>",
"objects": [
{
"table": {
"source_schema": "<ad-account-id>",
"source_table": "custom_report",
"destination_catalog": "<destination-catalog>",
"destination_schema": "<destination-schema>",
"destination_table": "my_ad_group_custom_report",
"connector_options": {
"reddit_ads_options": {
"sync_start_date": "2024-01-01",
"lookback_window_days": 30,
"custom_report_options": {
"breakdowns": ["AD_GROUP_ID", "DATE"],
"fields": ["IMPRESSIONS", "CLICKS", "SPEND", "CTR"]
}
}
}
}
}
]
}
}
json_payload = json.dumps(pipeline_spec, indent=2)
create_pipeline(json_payload)
Padrões comuns
Para configurações avançadas de pipeline, consulte Padrões comuns para pipelines de ingestão gerenciados.
Próximos passos
Comece, programe e defina alertas em seu pipeline. Consulte Tarefas comuns de manutenção de pipeline.