Pular para o conteúdo principal

Ingira relatórios do Workday

Aprenda como importar relatórios do Workday para Databricks usando LakeFlow Connect.

Requisitos

  • Para criar um pipeline de ingestão, você deve primeiro atender aos seguintes requisitos:

    • Seu workspace deve estar habilitado para o Unity Catalog.

    • O compute sem servidor deve estar habilitado para o seu workspace. Consulte os requisitos do compute sem servidor.

    • Se você planeja criar uma nova conexão: Você deve ter privilégios CREATE CONNECTION no metastore. Consulte a seção sobre privilégios de gerenciamento no Unity Catalog.

      Se o conector oferecer suporte à criação pipeline baseada em interface de usuário, um administrador poderá criar a conexão e o pipeline ao mesmo tempo, concluindo os passos nesta página. No entanto, se os usuários que criam o pipeline usarem a criação pipeline baseada em API ou não forem usuários administradores, um administrador deverá primeiro criar a conexão no Catalog Explorer. Veja Conectar às fontes de ingestão de gerenciar.

    • Se você planeja usar uma conexão existente: você deve ter privilégios USE CONNECTION ou ALL PRIVILEGES no objeto de conexão.

    • Você deve ter privilégios USE CATALOG no catálogo de destino.

    • Você deve ter privilégios USE SCHEMA e CREATE TABLE em um esquema existente ou privilégios CREATE SCHEMA no catálogo de destino.

  • Para ingerir do Workday, é preciso primeiro concluir os passos em Criar uma Conexão com Relatórios do Workday.

Configurar a rede

Se o controle de saída doserverless estiver ativado, coloque na lista de permissões os nomes de host dos URLs do seu relatório. Por exemplo, o URL https://ww1.workday.com/service/ccx/<tenant>/<reportName>?format=json do relatório tem o nome de host https://ww1.workday.com. Consulte gerenciar políticas de rede para serverless controle de saída.

Criar um pipeline de ingestão

  1. Na barra lateral do site Databricks workspace, clique em ingestão de dados .
  2. Na página Adicionar dados , em Conectores do Databricks , clique em Workday Reports .
  3. Na página Conexão do assistente de ingestão, selecione a conexão que armazena suas credenciais de acesso do Workday Reports. Se você tiver o privilégio CREATE CONNECTION no metastore, você pode clicar em Ícone de mais (+). Criar conexão para criar uma nova conexão com os detalhes de autenticação em Criar uma conexão do Workday Reports.
  4. Clique em Avançar .
  5. Na página de configuração de ingestão , insira um nome exclusivo para o pipeline.
  6. Selecione um catálogo e um esquema para gravar logs de eventos. Se você tiver privilégios USE CATALOG e CREATE SCHEMA no catálogo, poderá clicar. Ícone de mais (+). Para criar um novo esquema, clique em "Criar esquema" no menu suspenso.
  7. Clique em Create pipeline (Criar pipeline) e continue .
  8. Na página Relatório , clique Ícone de mais (+). Adicione o relatório e insira o URL do relatório. Repita o processo para cada relatório que desejar importar.
  9. Clique em Salvar e continuar .
  10. Na página Destino , selecione um catálogo e um esquema para carregar os dados. Se você tiver privilégios USE CATALOG e CREATE SCHEMA no catálogo, poderá clicar. Ícone de mais (+). Para criar um novo esquema, clique em "Criar esquema" no menu suspenso.
  11. Clique em Salvar e continuar .
  12. (Opcional) Na página de programação e notificações , clique em Ícone de mais (+). Criar programar . Defina a frequência de refresh das tabelas de destino.
  13. (Opcional) Clique Ícone de mais (+). Adicione uma notificação para configurar notificações email para operações pipeline bem-sucedidas ou com falha e, em seguida, clique em Salvar e execute pipeline .

Exemplos

Utilize esses exemplos para configurar seu pipeline.

Ingerir um único relatório

O seguinte arquivo de definição de pipeline ingere um único relatório do Workday:

YAML
variables:
dest_catalog:
default: main
dest_schema:
default: ingest_destination_schema

# The main pipeline for workday_dab
resources:
pipelines:
pipeline_workday:
name: workday_pipeline
catalog: ${var.dest_catalog}
schema: ${var.dest_schema}
ingestion_definition:
connection_name: <workday-connection>
objects:
# An array of objects to ingest from Workday. This example ingests a report about all active employees.
- report:
source_url: https://wd2-impl-services1.workday.com/ccx/service/customreport2/All_Active_Employees_Data?format=json
destination_catalog: ${var.dest_catalog}
destination_schema: ${var.dest_schema}
destination_table: All_Active_Employees_Data
table_configuration:
primary_keys:
- Employee_ID

Ingerir vários relatórios

O seguinte arquivo de definição de pipeline ingere dois relatórios do Workday em esquemas separados:

nota

O suporte pipeline com múltiplos destinos é feito exclusivamente via API. Não é possível configurar vários esquemas de destino na interface do usuário do Databricks.

YAML
resources:
pipelines:
pipeline_workday:
name: workday_pipeline
catalog: my_catalog_1 # Location of the pipeline event log
schema: my_schema_1 # Location of the pipeline event log
ingestion_definition:
connection_name: <workday-connection>
objects:
- report:
source_url: <report-url-1>
destination_catalog: my_catalog_1
destination_schema: my_schema_1
destination_table: my_table_1
table_configuration:
primary_keys:
- <primary_key_column>
- report:
source_url: <report-url-2>
destination_catalog: my_catalog_2
destination_schema: my_schema_2
destination_table: my_table_2
table_configuration:
primary_keys:
- <primary_key_column>

Ingerir incrementalmente, começando de uma data fixa

info

Beta

A ingestão incremental está em Beta. Para limitações, consulte Ingestão incremental.

O exemplo a seguir ingere um relatório incrementalmente a partir de 2025-02-01, com um atraso de um dia em relação à data atual. sequence_by especifica a coluna do cursor, e workday_report_parameters.parameters mapeia os aliases XML dos seus prompts do Workday para expressões de filtro. O filtro de começar usa coalesce(current_offset(), date(...)) para retomar do último valor do cursor em execuções subsequentes ou retornar à data de começar na primeira execução.

YAML
variables:
dest_catalog:
default: main
dest_schema:
default: ingest_destination_schema

resources:
pipelines:
pipeline_workday:
name: workday_pipeline
catalog: ${var.dest_catalog}
schema: ${var.dest_schema}
ingestion_definition:
connection_name: <workday-connection>
objects:
- report:
source_url: https://wd2-impl-services1.workday.com/ccx/service/customreport2/<report-name>?format=json
destination_catalog: ${var.dest_catalog}
destination_schema: ${var.dest_schema}
destination_table: <destination-table>
table_configuration:
primary_keys:
- <primary_key_column>
sequence_by:
- <cursor_column>
workday_report_parameters:
parameters:
<Start_Filter_XML_Alias>: '{coalesce(current_offset(), date("2025-02-01"))}'
<End_Filter_XML_Alias>: '{current_date() - INTERVAL 1 DAY}'

Ingerir incrementalmente usando uma janela deslizante

info

Beta

A ingestão incremental está em Beta. Para limitações, consulte Ingestão incremental.

O exemplo a seguir sempre reincorpora os últimos 30 dias em cada execução, definindo ambos os filtros em relação a current_date() sem coalesce.

YAML
variables:
dest_catalog:
default: main
dest_schema:
default: ingest_destination_schema

resources:
pipelines:
pipeline_workday:
name: workday_pipeline
catalog: ${var.dest_catalog}
schema: ${var.dest_schema}
ingestion_definition:
connection_name: <workday-connection>
objects:
- report:
source_url: https://wd2-impl-services1.workday.com/ccx/service/customreport2/<report-name>?format=json
destination_catalog: ${var.dest_catalog}
destination_schema: ${var.dest_schema}
destination_table: <destination-table>
table_configuration:
primary_keys:
- <primary_key_column>
sequence_by:
- <cursor_column>
workday_report_parameters:
parameters:
<Start_Filter_XML_Alias>: '{current_date() - INTERVAL 30 DAY}'
<End_Filter_XML_Alias>: '{current_date()}'

Arquivo de definição de tarefas do Declarative Automation Bundles

Segue abaixo um exemplo de arquivo de definição de tarefa para uso com pacotes de automação declarativa. A execução do trabalho ocorre todos os dias, exatamente um dia após a última execução.

YAML
resources:
jobs:
workday_dab_job:
name: workday_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_workday.id}

Padrões comuns

Para configurações avançadas pipeline , consulte Padrões comuns para gerenciar pipeline de ingestão.

Próximos passos

começar, programar e definir alerta em seu pipeline. Consulte Tarefa comum de manutenção pipeline.

Expressões suportadas para parâmetros de prompt

Ao configurar a ingestão incremental, os valores de prompt workday_report_parameters devem usar a sintaxe de expressão compatível. Expressões arbitrárias não são suportadas.

Primitivas compatíveis:

  • current_date() — A data de hoje no começar do pipeline, no formato YYYY-MM-DD.
  • date("YYYY-MM-DD") — Uma data fixa. Deve usar o formato YYYY-MM-DD.
  • current_date() - INTERVAL N DAY ou date("...") - INTERVAL N DAY — Subtrai N dias de uma data. N deve ser um número inteiro positivo. Apenas DAY é compatível (não WEEK, MONTH, etc.). Apenas a subtração (-) é compatível.
  • coalesce(current_offset(), <fallback>) — Para ingestão incremental. Na primeira execução, usa a expressão fallback. Em execuções subsequentes, usa o último valor de cursor ingerido automaticamente rastreado pelo pipeline. O fallback pode ser qualquer um dos outros primitivos suportados.

Regras:

Regra

Detalhe

Chaves necessárias

Todo valor de parâmetro deve ser envolvido em { e }

Formato da data

Deve ser YYYY-MM-DD. Nenhum outro formato é suportado.

Apenas subtração

+ Não suportado. Somente - INTERVAL N DAY.

Somente unidade DIA

WEEK, MONTH, YEAR e HOUR não são suportados.

Apenas números inteiros positivos

INTERVAL -1 DAY é inválido. Use INTERVAL 1 DAY.

Um coalesce por URL

Você pode usar no máximo uma expressão coalesce() por URL de relatório. Usar mais de um causa um erro.

Nenhuma função aninhada

coalesce(current_offset(), coalesce(...)) não é válido.

current_offset() somente dentro coalesce

current_offset() não pode ser usado autonomamente ou em aritmética INTERVAL.

Espaço em branco

Espaços iniciais/finais ao redor da expressão são aceitáveis. Espaços dentro de nomes de função não são válidos.

Nomes dos parâmetros

Deve corresponder aos nomes exatos dos prompts configurados no seu relatório personalizado do Workday.

nota

Use coalesce(current_offset(), <fallback>) apenas no prompt de começar (por exemplo, Date_Start), não no prompt final. Se você usar coalesce no prompt final, o limite final será fixado após a primeira execução e o pipeline buscará novamente o mesmo intervalo de dados a cada atualização.

O prompt final deve ser sempre determinístico e progressivo: use current_date(), current_date() - INTERVAL N DAY ou um date("YYYY-MM-DD") fixo.

Recurso adicional