Pular para o conteúdo principal

CopyStageTransformer

Visão geral​

Converte estágios COPY do DataStage em instruções SQL SELECT. Trata tanto entradas de conjuntos de dados (mapeadas para tabelas Snowflake) quanto entradas de estágios (referências a CTEs).

Tipo de estágio: COPY Saída: SQL SELECT com filtragem e renomeação de colunas

Recursos​

  • Mapeia conjuntos de dados do DataStage para tabelas Snowflake
  • Lê estágios anteriores por meio de schema_registry
  • Aplica a filtragem de colunas da cláusula keep
  • Trata definições de tipos de colunas da seção modify
  • Deduplica colunas de estágios com múltiplas saídas

Exemplo de estágio DataStage​

Entrada (formato .dsx)​

#### STAGE: CopyDimension
## Operator
copy
## General options
[ident('CopyDimension')]
## Inputs
0< [ds] '[&"$PathDataSetWarehouse"]/DimLookup.ds'
## Outputs
0> [-pp; modify (
SOURCE_KEY:nullable decimal[38,10]=SOURCE_KEY;
DIMENSION_KEY:nullable decimal[15,0]=DIMENSION_KEY;
keep
SOURCE_KEY,DIMENSION_KEY;
)] 'CopyDimension:Out_Process.v'

Configuração do mapeamento de conjuntos de dados​

dataset_table_mapping = {
'DimLookup.ds': 'PUBLIC.DIM_LOOKUP_TABLE'
}

SQL gerado​

SELECT
SOURCE_KEY,
DIMENSION_KEY
FROM PUBLIC.DIM_LOOKUP_TABLE

Esquema de saída​

[
{
"name": "SOURCE_KEY",
"type": "number"
},
{
"name": "DIMENSION_KEY",
"type": "number"
}
]

Como funciona​

  1. Lê o caminho do conjunto de dados nas entradas: [ds] '[&"$PathDataSetWarehouse"]/DimLookup.ds'
  2. Mapeia o conjunto de dados para uma tabela Snowflake usando dataset_table_mapping
  3. Extrai os tipos das colunas da seção modify:
    • decimal[38,10] → number
    • decimal[15,0] → number
    • string[max=N] → string
  4. Aplica o filtro keep para selecionar apenas as colunas especificadas: SOURCE_KEY, DIMENSION_KEY
  5. Gera SELECT com a lista de colunas filtrada a partir da tabela mapeada

Mapeamento de tipos​

Os tipos do DataStage são convertidos em tipos Snowflake:

Tipo DataStageTipo Snowflake
decimal[p,s]number
string[max=N]string
int32, int64number
datedate
timestamptimestamp

Filtragem de colunas​

O transformador oferece três modos de filtragem:

  1. Cláusula keep - Apenas as colunas especificadas são selecionadas

    keep
    SOURCE_KEY,DIMENSION_KEY;
  2. Cláusula drop - Todas as colunas, exceto as especificadas

    drop
    TEMP_COLUMN;
  3. Sem filtro - Todas as colunas da origem

Leitura de estágios e de conjuntos de dados​

Entrada de conjunto de dados​

## Inputs
0< [ds] '[&"$PathDataSetDwfatos"]/MyDataset.ds'

Exige mapeamento em dataset_table_mapping.

Entrada de estágio​

## Inputs
0< [] 'PreviousStage:output.v'

Lê o esquema de schema_registry e referencia a CTE do estágio anterior.

Limitações​

  • Exige dataset_table_mapping para entradas de conjuntos de dados (sem descoberta automática de tabelas)
  • Inferência de tipos de colunas depende do preenchimento da seção modify ou de schema_registry
  • Múltiplos links de saída resultam em uma lista de colunas deduplicada
  • Mapeamentos view não suportados (a renomeação de colunas em COPY deve usar um estágio MODIFY posterior)
  • ModifyStageTransformer - Para renomeação e filtragem de colunas sem ler conjuntos de dados
  • ImportStageTransformer - Para entradas de arquivos (CSV, arquivos sequenciais)
  • InputStageTransformer - Para entradas de tabelas ou SQL Oracle