Вы находитесь на странице: 1из 121

DataStage – Conceitos Básicos

Junho, 2013

1 © 2010 IBM Corporation


Introdução

• Esse workshop tem o objetivo de apresentar a ferramenta IBM Information Server


DataStage, abrangendo os seus conceitos básicos.

• Público Alvo: Desenvolvedores iniciantes de DataStage.

2 © 2011 IBM Corporation


Apresentação dos Componentes da
Ferramenta
IBM InfoSphere Information Server DataStage

3 © 2010 IBM Corporation


Information Server – Console de Administração

4 © 2011 IBM Corporation


Information Server – Arquitetura do DataStage

Clients

Parallel engine Server engine

Engines Shared Repository

5 © 2011 IBM Corporation


Information Server – Administrator Client

6 © 2011 IBM Corporation


Information Server – Designer Client

7 © 2011 IBM Corporation


Information Server – Director Client

Mensagens
de log no
Director

8 © 2011 IBM Corporation


Information Server – Director Client

Pastas definidas
pelo usuário

Pasta padrão
de jobs

Pastas de
definição
padrão de
tabela

9 © 2011 IBM Corporation


Information Server – Paralelismo de escalabilidade

• Divide a quantidade de dados de entrada em subconjuntos a serem


processados em separadado, em paralelo, cada um por um
operador:
• Subconjuntos: também chamados de partições.

• Cada partição de dados é processada pelo mesmo operador:


• Exemplo, se o estágio for um filtro, cada subconjunto de dados
de cada partição será filtrada exatamente da mesma maneira.

• Facilita a escalabilidade linear


• 8 vezes mais rápido usando 8 processadores
• 24 vezes mais rápido usando 24 processadores
• N vezes mais rápido usando N processadores mais.
• …

10 © 2011 IBM Corporation


Information Server – Paralelismo de escalabilidade

• Esquematização de um fluxo sem paralelismo:

Figura de um job DataStage da


maneira como é apresentado
ao desenvolvedor.

• Esquematização de um fluxo com paralelismo, em tempo de


execução: Esquematização do mesmo
job, da forma como o mesmo
funcionaria no DataStage, com
grau de paralelismo = 4, ou
seja, arquivo de configuração
APT_CONFIG_FILE com 4
nodes.

11 © 2011 IBM Corporation


IBM InfoSphere Information Server DataStage
Arquitetura de DW do banco Itaú
VISÃO GERAL

12 © 2010 IBM Corporation


Apresentação do Ambiente – Arquitetura MPP
Ambiente de Produção DATASTAGE
3 Compute Nodes,
CADA UM COM:

POWER 6 – 18 Cores

75GB RAM MEMORY

Engine e AIX 6.1


Repositorio/WAS,
CADA UM COM:

POWER 6 – 8 Cores

60GB RAM MEMORY

AIX 6.1

Information Server
8.5.0.1v

Engine e
Repositorio/WAS,
CADA UM COM:

POWER 6 – 4 Cores
HA
32GB RAM MEMORY Entre
Engine e
AIX 6.1 Repositorio/WAS

Information Server
8.5.0.1v

13 © 2011 IBM Corporation


Apresentação do Ambiente
Grau de Paralelismo DATASTAGE Produção.

1 Compute Node

Partições
1
1
2
2
HA
Entre o
3
4 3
Engine e o 4
Repositorio/WAS
Cada
node
DataStage
possui 4
partições

14 © 2011 IBM Corporation


Apresentação do Ambiente –
Grau de Paralelismo DB2 Produção.

Partições
1 DataNode 1
2
3
1 4
2
3
4
5
5
6 6
7
8 7
8
Cada Data
Node possui
8 partições

15 © 2011 IBM Corporation


Apresentação do Ambiente - Carga do DataStage no DB2 ISAS

DataStage Conductor

1 Section 1 Section 1 Section


Leader por Leader por Leader por
Compute Compute Compute
Node Node Node

Players Players

NAMED PIPES
(AIX)

Processos Processo
osh s osh

16 Data Node DB2 ISAS © 2011 IBM Corporation


IBM InfoSphere Information Server DataStage
COMPONENTE WEB CONSOLE

17 © 2010 IBM Corporation


Console de Administração Web – Introdução

Console do
Information Server

Information Server
ID de usuário

18 © 2011 IBM Corporation


Criar um ID de usuário - DataStage

Console de
Administração Criar
usuário
novo

Usuários

19 © 2011 IBM Corporation


Criar um ID de usuário - DataStage

ID de usuário Papel “Administrador”


da Suíte

Papel de
usuários Usuário

Papel de
Administrador
Papel de usuário
DataStage
20 © 2011 IBM Corporation
Credenciais de usuário – DataStage

Credenciais do
DataStage

21 © 2011 IBM Corporation


IBM InfoSphere Information Server DataStage
COMPONENTE ADMINISTRATOR CLIENT

22 © 2010 IBM Corporation


Acessando o DataStage Administrator
Host name,
número da porta
da aplicação

Usuário e senha
do DataStage

Nome ou endereço IP
do servidor do
DataStage
23 © 2011 IBM Corporation
DataStage Administrator – aba “Projects”

Projetos do
Servidor
Propriedades dos
Projetos

Link para o Information Server


Administration console
24 © 2011 IBM Corporation
DataStage Administrator – aba “General”

Habilita runtime
column propagation
(RCP) como default

Especificar auto purge

Variáves Globais
de Ambiente

25 © 2011 IBM Corporation


DataStage Administrator – Variáveis Globais

Parallel job variables

User-defined variables
(Variáveis Globais)

26 © 2011 IBM Corporation


DataStage Administrator - Permissões

Papel do
usuário

Add DataStage
users

27 © 2011 IBM Corporation


DataStage Administrator - Mapear usuários e grupos em projetos

Grupos e
usuários
disponíveis. Mapear Usuários
do DataStage

28 © 2011 IBM Corporation


DataStage Administrator - atribuir papéis aos usuários

Usuário
adicionado no
DataStage

Selecionar o
papel no
DataStage

29 © 2011 IBM Corporation


DataStage Administrator - Aba Parallel

Gerenciador de Mensagens
definido para o Projeto

30 © 2011 IBM Corporation


IBM InfoSphere Information Server DataStage
COMPONENTE DESIGNER CLIENT

31 © 2010 IBM Corporation


Acessando o DataStage Designer

Host name,
port number of
application
server

DataStage server
machine / project

32 © 2011 IBM Corporation


DataStage Designer – Área de Trabalho
Repositório Menus
Barra de
ferramenta

Tela do
Parallel

Palette

33 © 2011 IBM Corporation


DataStage Designer – Janela de repositório
Busca por
objetos no
Projeto

Projeto
Pasta de
jobs padrão

Pasta padrão
dos tables
definitions

34 © 2011 IBM Corporation


DataStage Designer – Janela de Exportação

Clicar para
selecionar
objetos do
repositório

Objetos
Selecionados

Tipo de Pasta padrão


exportação dos jobs

Ação:
35 Exportar © 2011 IBM Corporation
DataStage Designer – Opções de Importação

Importar todos os
objetos do arquivo

Mostrar uma lista


para selecionar

36 © 2011 IBM Corporation


DataStage Designer – Metadados arquivos sequenciais

Importar
definições de
aquivo

37 © 2011 IBM Corporation


DataStage Designer – Importação arquivos sequenciais
Diretório
contendo
arquivos

Importar

Selecionar
o arquivo

Definir pasta do
repositório

38 © 2011 IBM Corporation


DataStage Designer – Importação arquivos sequenciais
Editar/Fomatar Se a primeira linha
columas for os nomes das
colunas…

Delimitado
r

39 © 2011 IBM Corporation


DataStage Designer – Intervenção nos tipos de dados

Duplo clique para


propriedades
avançadas

40 © 2011 IBM Corporation


DataStage Designer – Intervenção nos tipos de dados

Propriedades do
Parallel Propriedades -
Categorias

Propriedades
Disponíveis

41 © 2011 IBM Corporation


DataStage Designer – table definition – aba geral

Tipo Fonte

Table
Definition

42 © 2011 IBM Corporation


DataStage Designer – paleta de ferramentas - estágios

Stage
categories

Estágios

43 © 2011 IBM Corporation


DataStage Designer – criar um novo parallel job

Open
New
Window

Parallel jobs

44 © 2011 IBM Corporation


DataStage Designer – arrastar estágio e links da “Palette”
Compile

Peek
Row
Propriedades Generator
do Job

45 © 2011 IBM Corporation


DataStage Designer – renomear links e estágios - Padronização

Clicar no estágio ou link para


renomear;

Nomes significativos tem muitos


benefícios:
– Documentação
– Clareza
– Diminuição dos erros de
desenvolvimento

46 © 2011 IBM Corporation


DataStage Designer – editando o estágio “Row Generator”.

Aba
Propriedades

Atribuir
valor à
propriedade

Propriedade
do Row
Generator

47 © 2011 IBM Corporation


DataStage Designer – abas colunas
Double-click to specify View data
extended properties

Load a
Table
Definition

Select Table
Definition

48 © 2011 IBM Corporation


DataStage Designer – propriedades adicionais

Especificar
valores e
propriedades

Propriedades
adicionais para
abrir
49 © 2011 IBM Corporation
DataStage Designer – propriedades do estágio “Peek”

Saída para
o Log

50 © 2011 IBM Corporation


DataStage Designer – definindo um parâmetro

Aba “Parameters”

Parâmetros
Adicionar variável de
ambiente

51 © 2011 IBM Corporation


DataStage Designer – usando um parâmetro de job no estágio

Parâmetro Local

Inserir parâmetros
de job
(local/global)

52 © 2011 IBM Corporation


DataStage Designer – propriedades do job - documentação

Documentação

53 © 2011 IBM Corporation


DataStage Designer – propriedades do estágio - anotações

54 © 2011 IBM Corporation


DataStage Designer – compilando um job

Executar

Compilar

55 © 2011 IBM Corporation


DataStage Designer – mensagens de erro e sucesso.

Conduz até o
código com erro Clicar para mais
informações

56 © 2011 IBM Corporation


IBM InfoSphere Information Server DataStage
COMPONENTE DIRECTOR CLIENT

57 © 2010 IBM Corporation


DataStage Director - opções de execução – interatividade

Atribuir valores
aos parâmetros

58 © 2011 IBM Corporation


DataStage Director - opções de execução – interatividade.

Parar após N
número de
warnings

Parar após N
número de linhas

59 © 2011 IBM Corporation


DataStage Director – visualização do status.

Status view Schedule view

Log view

Selecione o
job para ver
as
mensagens
de log.

60 © 2011 IBM Corporation


DataStage Director – visualização do log

61 © 2011 IBM Corporation


DataStage Director – visualização do log
Clique no ícone do
“notepad” para ver
os detalhes de log

Mensagens do
estágio Peek:
úteis na validação
de informação.

62 © 2011 IBM Corporation


DataStage Director - detalhes de mensagens

63 © 2011 IBM Corporation


DataStage Director – limpeza dos logs

64 © 2011 IBM Corporation


IBM InfoSphere Information Server DataStage
ESTÁGIOS DO DATASTAGE

65 © 2010 IBM Corporation


Estágios do DataStage – Apresentação

Um job é um programa composto por estágios e links.

• Cada estágio possui um código pré-concebido na linguagem Orchestrate (variação


do C++) que, uma vez interligados por links, constituem um programa DataStage. Tal
programa, ao ser compilado, gera executáveis. Os executáveis, ao serem invocados,
criam processos OSH no file-system.

• A quantidade de .OSH gerados, como já foi dito, está proporcionalmente vinculada


ao número de nodes configurados no DataStage.

• Assim, pode-se dizer que os resultados do DataStage são determinados pelos


estágios, ícones com imagens cognitivas que, organizados um após o outro, formam
fluxos, ou seja, programas.

• Os slides seguintes tem o objetivo de apresentar os pontos de atenção a serem


observados nos principais estágios da ferramenta DataStage.

66 © 2011 IBM Corporation


Estágios mais populares

Sources & Targets Stages:


- Banco de dados, Arquivos
sequenciais, data sets

Combinação / DePara de dados:


LookUp, Join, Merge
Aggregator

Estágios de transformação:
Transformer, Remove Duplicates

Estágios Auxiliares:
Row Generator, Peek, Sort

67 © 2011 IBM Corporation


Estágios – operadores associados

Operadores de leitura (import), gravação (export), banco de dados, junção


(join/lookup), processamento de “feixes” de informação, tratativa de data
types, filtragem e remoção de duplicados, funções do Unix, ordenação etc.
68 © 2011 IBM Corporation
Estágios – operadores associados

Operadores de reestruturação,
agregação, algoritmos de
particionamento, algoritmos
de coleta.

Esses operadores são


independentes, mas se
complementam no código
em conjunto com outros
operadores.

69 © 2011 IBM Corporation


Sugestão de Padronização – Nomenclatura dos Estágios

Nomenclatura dos Estágios


Seguindo as diretrizes de padronização, apresentam-se abaixo as regras para a nomenclatura dos
estágios de que compõem um fluxo no job:

Caso algum estágio


não esteja listado
nessa lista dos
principais estágios,
favor consultar a
equipe de suporte
ao desenvolvimento
para definir o
padrão.

70 © 2011 IBM Corporation


Sugestão de Padronização – Nomenclatura dos Estágios

Caso algum estágio


não esteja listado
nessa lista dos
principais estágios,
favor consultar a
equipe de suporte
ao desenvolvimento
para definir o
padrão.

71 © 2011 IBM Corporation


Sugestão de Padronização – Nomenclatura dos Estágios

Caso algum estágio


não esteja listado
nessa lista dos
principais estágios,
favor consultar a
equipe de suporte
ao desenvolvimento
para definir o
padrão.

72 © 2011 IBM Corporation


Sugestão de Padronização – Nomenclatura dos Estágios

Caso algum estágio


não esteja listado
nessa lista dos
principais estágios,
favor consultar a
equipe de suporte
ao desenvolvimento
para definir o
padrão.

73 © 2011 IBM Corporation


Sugestão de Padronização – Nomenclatura dos Estágios

Caso algum estágio


não esteja listado
nessa lista dos
principais estágios,
favor consultar a
equipe de suporte
ao desenvolvimento
para definir o
padrão.

74 © 2011 IBM Corporation


Estágios – Transformer

Transformer Stage

O Transformer stage é utilizado em transformações de dados, sempre que houver regras de negócio e
métricas associadas a fórmulas matemáticas, lógicas, bem como constraints e diversas regras de lógica
de transformação.

É muito comum encontrarmos expressões complexas que quase sempre podem ser otimizadas nas
derivações do Transformer: Simplificar o uso de expressões de derivação é uma diretriz de qualidade de
desenvolvimento, deixando o código sujeito à facilidade de manutenção.

Em vez da expressão:

Preferir a expressão:

75 © 2011 IBM Corporation


Estágios – Transformer
O transformer stage é o estágio
mais útil do DataStage no que se
refere a transformação de dados,
o “T” do ETL.

76 © 2011 IBM Corporation


Estágios – Transformer – Mapeando colunas

Mapeaia as colunas da origem


(source) para o destino (target),
conforme ilustração abaixo
(arrastar e soltar).

Como “tipo de dados” é um


metadado, uma dos sinônimos
encontrados no DataStage para
tipo de dados é “metadata”.

77 © 2011 IBM Corporation


Estágios – Transformer – Adicionando colunas

Para adicionar
novas colunas,
pode-se usar o
“INSERT” para
adicionar
colunas no
posicionamento
especificado ou
“APPEND” para
adicionar uma
nova coluna no
final.

78 © 2011 IBM Corporation


Estágios – Transformer – Renomeando colunas.

• Para renomear
a coluna, basta
clicar na área
de metadados
e alterar o
nome.

• Quando a
derivação é
incompleta ou
inválida, o
campo fica
com a seleção
vermelha.

• Os tipos de
dados podem
ser editados
também.
79 © 2011 IBM Corporation
Estágios – Transformer – Constraints & Derivações

“Constraints” se
aplicam à linha
inteira;

É o recurso por
meio do qual o
desenvolvedor
pode “impedir” que
linhas fora do
contexto de
negócio
continuem sendo
processadas;

Sem constraints,
todas as linhas são
consideradas.
80 © 2011 IBM Corporation
Estágios – Transformer – Janela de Constraint

Uma “Constraint” é
definida por link;

Vários links podem


compor uma
constraint
composta, por meio
das cláusulas
“AND”, “OR”;

Clicando no “Reject
Row” ou
“Otherwise/Log”,
todos os registros
que não atenderem
à constraint podem
ser reaproveitados
em outra saída;
Não é necessário “constraint” para os
rejeitados.

81 © 2011 IBM Corporation


Estágios – Transformer - Derivações

Aplicam-se a cada
coluna;

Especifica o valor
a ser movido para
uma coluna
destino (funções,
lógicas,
matemáticas,
constantes);

Toda a coluna
necessita de uma
derivação;

Nem toda a
derivação é uma
coluna de entrada.

82 © 2011 IBM Corporation


Estágios – Transformer – Menus de funções

• O editor de derivações é suscetível ao contexto: os resultados transferidos


dependem do contexto das variáveis de estágio (stage variables),
parâmetros, funções matemáticas e lógicas, etc;

• Essas opções podem ser acessadas por meio dos “right-clicks”.

83 © 2011 IBM Corporation


Estágios – Transformer - Funções
Uma completa
gama de funções de
transformação.

84 © 2011 IBM Corporation


Estágios – Transformer – Tratamento de erros

Problema =
“vermelho”:

Erro de
parêntesis;
Erro de sintaxe;
Erro de nome de
link, derivação ou
demais objetos;

Funções
inexistentes;

Derivações
inexistentes;

...

85 © 2011 IBM Corporation


Estágios – Transformer

Similares às variáveis de
programa;

O as transformer utiliza
para simplificar as
derivações e constraints;

Usadas para evitar


codificações duplicadas;

Armazenam valores
durante a leitura;

Usadas para acumular


valores e como ponto de
comparação de
resultados atuais contra
resultados anteriores;

etc.

86 © 2011 IBM Corporation


Estágios – Transformer – Ordem de Execução

• Da equerda para a direita, de cima para baixo;

• Derivações nas variáveis de estágio são executadas primeiro;

• Constraints são executadas antes das derivações.

87 © 2011 IBM Corporation


Estágios – Tratamento de Nulidade

NULOS precisam ser TRATADOS, de acordo com a interpretação abaixo:

88 © 2011 IBM Corporation


Estágios – Transformer
O transformer é para
Transformer Stage expressões matemáticas. Se
for só para filtrar registros,
Para filtrar registros: prefira o “Filter Stage”, cuja
compilação é mais rápida,
tornado o job mais leve.

Pode impactar no
desempenho também.

Seguindo a linha de raciocínio


Para mapear colunas: acima, se for só para mapear
colunas, prefira o “Copy
Stage”, que também torna a
compilação mais rápida.

Pode impactar na
desempenho também.

89 © 2011 IBM Corporation


Estágios – Transformer

Transformer Stage Muitas vezes o Transformer é


usado apenas para criar uma
nova coluna no fluxo. Nesse
Para criar N colunas:
caso, prefira o
ColumnGenerator Stage.

Para dúvidas, consulte o


suporte ao desenvolvimento.

Para converter dados, tratar espaços (trim), O Modify, em vez do


dropar colunas ou tratar nulos: transformer, é o
direcionameno adequado para
tratar nulos, espaços e tipos
de dados diferentes.

Solicitar o documento do
“Modify Stage” para o suporte
ao desenvolvimento.

90 © 2011 IBM Corporation


Estágios – LOOKUP

LookUp Stage

O estágio LookUp pode ter um único link de entrada, um ou mais links de referência, um único link de
saída e um único link de rejeição; Dependendo do tipo e configuração do(s) estágio(s) que estão
fornecendo as informações de lookup, múltiplos links de referência podem coexistir.

Em Propriedades, categoria Options, há seguintes opções de comportamento do LookUp (If not found):

• Fail: É o valor padrão. A falha na busca do valor na(s) tabela(s) lookup(s) de referência causa a falha
no job);

• Continue: Independente do resultado da busca (registro encontrado ou não), o estágio envia o


registro para a saída e o processamento continua;

• Drop: O estágio elimina o registro se o mesmo não encontrar uma referência nas tabelas secundárias
e continua o processamento;

• Reject: O registro é enviado para o link de rejeição.

A vantagem do estágio LookUp é a performance. Desde que os links de referência tenham uma
quantidade de dados inferior a 2Gb, é muito mais rápido que o Join e o Merge no processamento de
combinação de dados, por isso é importante calcular a volumetria.

91 © 2011 IBM Corporation


Estágios – LOOKUP

LookUp Stage

PONTOS DE ATENÇÃO:

O uso do Lookup Stage não é recomendado para grandes volumes de dados (volume superior a 2Gb).
Apresentam-se abaixo algumas das características do estágio lookup:

1. Trabalha e é limitado à memória RAM, por isso, pode causar lentidão no ambiente, ao utilizar
grande parte da memória;
2. Para grandes volumes de dados nos links de referência (volume > 2Gb), PREFERIR o emprego do
Join stage ou do Merge stage em vez de Lookup stage;
3. Para a informação, o uso do Lookup stage gera warnings nos logs, caso haja a duplicação de
registros da base de referencia (links tracejados).

IMPORTANTE:

• Na opção Range LookUp com múltiplos Ranges, torna-se difícil para o job resolver o LookUp sem o
particionamento Entire manualmente configurado, uma vez que você não consegue saber em qual
node o DataStage redistribuiu os Ranges: Dessa forma, em ambiente MPP, a diretriz é forçar o
particionamento ENTIRE para Range Lookup.

• O LookUp FileSet é um estágio que tem as mesmas vantagens e limitações do LooKup.

92 © 2011 IBM Corporation


Estágios – JOIN

Join Stage

Recomendado para o o JOIN de duas ou mais fontes de dados.

Apresenta o mesmo estilo de funcionamento da cláusula “Join” da linguagem SQL, valendo-se das
opções “inner join, left outer join, right join e full outer join”;

É preciso selecionar uma ou mais chaves (key). É mandatório que os nomes das chaves sejam os
mesmos, iguais em todas as fontes, principal e secundárias.

Opções de joins disponíveis:


Full Outer Join: Todas as combinações possíveis;
Inner Join: Somente as combinações comuns em todas as fontes de dados, passando apenas os registros
encontrados se e somente se os valores das chaves de todas as fontes de dados forem iguais;
Left Outer Join: Join determinado pela tabela principal definida como left, passando todos os registros dessa
tabela, independente se o valor da chave encontra valor correspondente nas tabelas secundárias;
Right Join: Join determinado pela tabela principal definida como right, passando todos os registros dessa tabela
independente se o valor da chave encontra valor correspondente nas tabelas secundárias.
O padrão é Inner.

93 © 2011 IBM Corporation


Estágios – JOIN

Join Stage
IMPORTANTE:

Assim como a cláusula “join” da


linguagem SQL, o grau de plano
cartesiano estará em função das
duplicações de registros nas
diversas fontes: Resguardadas as
determinadas situações de
negócio, é preciso ter atenção a
esse detalhe.

94 © 2011 IBM Corporation


Estágios – SORT

Sort Stage

Estágio que promove a ordenação de dados sempre através de uma ou mais chaves.

Ao ser adotado, considerar as seguintes diretrizes:

• Usá-lo de forma independente pode ser mais trabalhoso, mas abre um leque maior de opções de
otimização, tais como:

• Restrict Memory Usage >= 20Mb e <=200 Mb;


• Stable Sort = False
• Sort Key Mode = Don't Sort (Previously Sorted), conhecido como “sort parcial”, que
economiza recursos de máquina mas exige alguns pré-requisitos.

Importante:

Para maiores informações de otimização do estágio SORT, há um documento específico sobre esse
assunto, disponível para a equipe de Suporte ao Desenvolvimento e que pode ser divulgado aos
interessados.

97 © 2011 IBM Corporation


Estágios – SEQUENTIAL FILE

Sequential File
É possível realizar a leitura paralela de arquivos
sequenciais (Arquivos ASCII e COBOL/EBCDIC) de
tamanho fixo ou variável.

Caso o arquivo de dados possua um volume


considerável de informações, recomenda-se
paralelizar a leitura no estágio Sequential File,
alterando o parâmetro “Number of readers per
Node” ou “Reader from multiple nodes = Yes”.

Esta opção implica diretamente na melhoria da


performance do job, implementando a leitura
Number Of Readers Per Node > 1. paralela de um estágio tipicamente sequencial.

Paralelização de arquivos separados pr No exemplo ao lado, a opção “Reader from


delimitadores. multiple nodes = Yes”, é uma extração paralela de
um arquivo fixo, de colunas de tamanho fixo, sem
Reader From Multiple Nodes = Yes. separação ou delimitadores.
Paralelização de arquivos fixos.

98 © 2011 IBM Corporation


Estágios – SEQUENTIAL FILE - CFF

Complex Flat File


O Complex Flat File é um estágio desenvolvido para
definições complexas de informação, tais como:
• Definição de Arquivos COBOL;
• Arrays/Subregistros;
• Sessões/laytouts diferentes de dados dentro do mesmo
arquivo.
Assim como o Sequential File, interpreta dados ASCII e
EBCDIC.
De igual forma, pode ser lido em paralelo ou sequencial:
sugere-se a leitura em paralelo, conforme definições abaixo.

Number Of Readers Per Node > 1.


Paralelização de arquivos separados pr delimitadores.
Reader From Multiple Nodes = Yes.
Paralelização de arquivos fixos.

99 © 2011 IBM Corporation


Estágios – Remove Duplicates

Remove Duplicates

O estágio Remove Duplicates é um estágio que depende da ordenação de chaves: a chave de


ordenação nem sempre é igual à chave que define a duplicidade.

• Em diversos cenários nos quais foram sugeridas a substituição do “Sort interno” acoplado para o
“Stage Sort” independente, foi possível comprovar uma melhoria no desempenho dos jobs, pois o
estágio “Sort” permite o uso da opção Restrict Memory Usage com valores que vão de 20 a 200
Mb, além do reaproveitamento de ordenações anteriores.

Conclusão: O que impacta a performance do Remove Duplicates é o Sort.

Dicas: Manter o particionamento Auto. Caso o resultado seja insatisfatório, modificar a propriedade do
particionamento escolhendo a opção de Hash em caso de chaves de remoção alfanuméricas, decimais e
outros tipos de dados, ou Modulus - mais veloz - em caso de chaves de remoção do tipo de dado inteiro
(int16, int32, int64).

100 © 2011 IBM Corporation


Estágios – Demais Estágios

Estágio Aplicabilidade
Indicado para conversões de dados (tipos de dados do tipo “date” e “time”
que não são default), uso de “trim” para tirar espaços, tratamento de
nulidade, drop de colunas, bem como o “rename” de colunas.
É o mais indicado estágio para filtro de registros com base no valor de uma
informação: a vantagem é uma compilação mais rápida do job e um
desempenho melhor, uma vez que esse operador foi desenvolvido apenas
para a função de filtro.
É o mais indicado estágio para a criação de colunas com valores constantes,
em vez de declará-los diretamente no Transformer Stage, por ser um
operador específico para esse fim.
No DataStage, é usado para a comparação de colunas em processos de
cargas incrementais: O CheckSum Generator não gera uma Surrogate Key,
mas tão somente uma chave de hash que pode auxiliar na geração da
Surrogate Key.
Ao usar o LookUp file set, um arquivo será fisicamente criado em cada
partição, referenciados por um descriptor, que, por convenção, tem um
sufixo ".fs". O LookUp File Set poderia ser usado em caso reutilização de
dados, com a mesma velocidade e limitação do LookUp Stage.

101 © 2011 IBM Corporation


IBM InfoSphere Information Server DataStage
ALGORITMOS DE PARTICIONAMENTOS

102 © 2010 IBM Corporation


Particionamento – Arquivo APT_CONFIG_FILE

103 © 2011 IBM Corporation


Grau de Paralelismo – Explicação

• Há dois tipos de Paralelismo:


Paralelismo de Partição:

Definido pelo arquivo APT_CONFIG_FILE, é proporcionado a patir da


quantidade de nós que são declarados nesse arquivo de configuração;

Paralelismo de Pipeline:

No processamento pipeline, cada estágio é paralelizado em um


processador diferente.

Fórmula Ideal: processamento pipeline (canalizado) + particionado.

104 © 2011 IBM Corporation


Grau de Paralelismo – Explicação

• O que é Grau de Paralelismo:

O grau de paralelismo nada mais é que o número de nodes que existe no arquivo
$APT_CONFIG_FILE.

Exemplo: De forma objetiva, um job de 5 estágios (Leitura-Junção-Agregação-


Gravação), que seja executado em um arquivo de configuração com 4 (quatro) nós,
signica que a quantidade de dados a ser processada será dividida e particionada em 4
porções, tornando o processamento mais veloz.

• Dentro dessa lógica exponencial (Quantidade de estágios vs. Quantidade de


nodes), um job de 5 estágios paralelos com grau de paralelismo igual a 4 definido
para todos os estágios, criará no mínimo 20 processos que ocuparão os
processadores. Se o grau de paralelismo for igual 8, criará no mínimo 40. O número
de nós do arquivo de configuração é a chave para a definição do grau de
paralelismo por job, podendo ser configurado por estágio.

105 © 2011 IBM Corporation


Grau de Paralelismo – Explicação

• Implementar jobs com muitos estágios pode constituir um risco, pois, ao concorrer com
os demais jobs, dependendo do grau de paralelismo adotado, resultaria em centenas ou
até mesmo milhares de processos concorrentes, de modo que os outros fluxos do
Control+M pudessem ser afetados em função dos limites da máquina.

• Para evitar isso, algumas ações devem ser reavaliadas, tais como:

• Uma janela de carga estratégica e acurada, pensada para cada um dos fluxos
do Control+M de processamento do DataStage, conforme já orientado;

• A segmentação (divisão) dos jobs em pequenos processos de poucos estágios,


procurando seguir a conceito de jobs somente de extração, jobs somente de
tranformação e jobs somente de carga;

• Além de garantir um grau de paralelismo justo, os processos segmentados facilitam a


depuração dos jobs, bem como o isolamento de problemas, ou seja, essa forma de
desenvolver favorece tanto o desenvolvedor quanto a administração da ferramenta.

106 © 2011 IBM Corporation


Grau de Paralelismo – Apresentação

• O Job como ele é:

O programa como é
visualizado pelo
desenvolvedor no Designer.

• O Job com paralelismo, em tempo de execução:

O programa em tempo de
execução com arquivo de
configuração
APT_CONFIG_FILE configurado
para grau 4, para todos os
estágios.

107 © 2011 IBM Corporation


Paralelismo – O arquivo APT_CONFIG_FILE

Tópico Avançado:

Esse “simples arquivo” é o principal


responsável pelo processamento
{ paralelo em DataStage
node "n1" {
fastname "s1"
pool "" "n1" "s1" "app2" "sort"
resource disk "/orch/n1/d1" {}
Dois aspectos chave: resource disk "/orch/n1/d2" {"bigdata"}
resource scratchdisk "/temp" {"sort"}
1. # nodes – definem o paralelismo }
node "n2" {
fastname "s2"
2. Cada paralelismo tem um pool "" "n2" "s2" "app1"
subconjunto de recursos resource disk "/orch/n2/d1" {}
resource disk "/orch/n2/d2" {"bigdata"}
chamados "pool" para execuções resource scratchdisk "/temp" {}
específicas (Exemplo: Use o node }
node "n3" {
“n1” para a aplicação “app2” e para fastname "s3"
os processos de sort) pool "" "n3" "s3" "app1"
resource disk "/orch/n3/d1" {}
(Advanced Topic) resource scratchdisk "/temp" {}

108 © 2011 IBM Corporation


Particionamentos – Apresentação

Conceito
Quando trabalhamos com dados de forma paralela, é necessário entender que os dados serão
dividos em blocos pela quantidade de partições. De uma forma bastante simplista, seria o mesmo
que dizer que um processamento de 80 Gb, por exemplo, ao ser submetifdo a um paralelismo de
grau 8, ou seja, 8 nodes, como resultado teríamos 8 porções de 10gb subdivididas pela(s)
máquina(s).
Vantagens
Tempo de processamento 8 vezes melhor, mais rápido.
Pontos de atenção
Quando distribuímos dados pelas partições, é necessário garantirmos que a forma como
esses dados são distribuídos seja orquestrada de modo que os mesmos possam ser
organizados sem perdas no momento em que for necessário encontrá-los para uma
agregação, join, remoção de duplicados etc.
Para garantirmos essa organização, o DataStage apresenta um conjunto de algoritmos que
funcionam no sentido de organizar os dados conforme a necessidade, que são os algoritmos
de particionamento.

109 © 2011 IBM Corporation


Processamento paralelo em tempo de execução
Objeto da Aplicação: Um fluxo gráfico criado com a interface gráfica do usuário do
DataStage (Designer client)

sequencial
Paralelismo de grau 4
Paralelismo de grau
= 4 partições
128 = 128 partições

Processador único SMP - Symmetric 128 Processadores


Multiprocessing Massively Parallel Processing
110 © 2011 IBM Corporation
Particionamentos – Tipos de Particionamentos

Há dois tipos de particionamento no DataStage, a saber:


Particionamentos pela Chave:

Registros são distribuídos com base no valor de uma chave.


• Hash
• Modulus
• Dois ou mais registros contendo o mesmo valor de chave nunca ficarão em partições
diferentes para esses dois algoritmos.
• DB2
• Encontra a chave de particionamento do DB2.
Particionamentos sem Chave:

Registros são distribuídos independentemente da ordem.


• Round Robin
• Random
• Entire
• Same

111 © 2011 IBM Corporation


Particionamentos – Algoritmos - Hash

Particionamentos pela Chave: HASH


Nesse caso, o conjunto de colunas eleitas como
chave, tornar-se-ão um código que o DataStage
conhece chamado “HASH”.
Conforme figura ao lado, todos os dados iguais
ficam na mesma partição e os que fogem ao
padrão são organizados num nó complementar.
Exemplo: CPFs iguais na mesma partição.
Particionamento ideal para garantir que as
chaves semelhantes estejam no mesmo node do
arquivo de configuração $APT_CONFIG_FILE.

Os dados são lidos na ordem EVITAR usar como chave de hash campos
apresentada e, ao serem submetidos ISOLADOS como Data de Referência, Sexo, ou
ao particionamento de hash, são campos em que sabemos que a maioria do seu
distribuídos conforme semelhança. domínio seja composto por informações
repetitivas.

112 © 2011 IBM Corporation


Particionamentos – Algoritmos - Modulus

Particionamentos pela Chave: MODULUS


Nesse caso, o conjunto de colunas eleitas como
chave, tornar-se-ão um código que o DataStage
conhece chamado “MODULUS”.

Semelhante ao HASH, esse particionamento exige


que os dados sejam INTEIROS (int16, int32,
int64), pois o algoritmo de MODULUS é baseado
na função abaixo:

Partition = MOD * (Valor da chave/Número de


Partições).

A distribuição dar-se-á da seguinte maneira:


Chave = 0, Total de Partições = 3 => 0 MOD 3 = 0
Chave = 1, Total de Partições = 3 => 1 MOD 3 = 1
Vantagem: É o método de Chave = 2, Total de Partições = 3 => 2 MOD 3 = 2
particionamento pela chave mais Chave = 3, Total de Partições = 3 => 3 MOD 3 = 0
rápido. Chave = 1, Total de Partições = 3 => 1 MOD 3 = 1
Desvantagem: Aceita somente ...
inteiros. * Função MOD presente na calculadora, resto.

113 © 2011 IBM Corporation


Particionamentos – Algoritmos – DB2 Connector

Particionamentos pela Chave: DB2 CONNECTOR

As partições do arquivo de entrada são definidas


da mesma maneira que o particionamento
efetuado pelo DB2.

É o método de particionamento adequado do


DB2 Connector que irá distribuir os dados de
acordo com o particionamento da tabela no DB2.

114 © 2011 IBM Corporation


Particionamentos – Algoritmos – Round Robin

Particionamentos SEM Chave: Round Robin


O Round Robin é um método de
parcionamento sem chave. A ordem de
distribuição é a ordem de leitura do registro.
Exemplo:

Dado o domínio ao lado “012345678”, que


significa a ordem do registro dentro do
domínio, a leitura será executada da seguinte
maneira para um ambiente com 3 nodes
(grau de paralelismo 3):

N0 – 0,3,6,...
N1 – 1,4,7,...
N2 – 2,5,8,...
Vantagem:
Distribuição equalitária dos registros O Round Robin é um método rápido de
pelos nodes/partições do DataStage. particionamento, é o método default de
Desvantagem: leitura de grande parte dos estágios, como o
Dados ficam espalhados sem ordem. sequential file stage, por exemplo.

115 © 2011 IBM Corporation


Particionamentos – Algoritmos - ENTIRE

Particionamentos SEM Chave: ENTIRE


O ENTIRE é um particionamento onde todos
os dados são duplicados nas partições/nodes,
conforme ilustrado ao lado.

Ele garante que não haja perdas na


combinação de dados, como o processo de
LOOKUP, por exemplo.

É o particionamento padrão do estágio


LOOKUP. Como o LOOKUP trabalha em
memória RAM, ao usar ENTIRE, significa que
todos os dados serão carregados em
Vantagem: memória, mesmo comportamento das
Todos os dados procurados serão partições.
encontrados.
Por essa razão que o LOOKUP apresenta
Desvantagem:
limitações de espaço, como veremos mais
Limitação vinculada ao espaço das partições adiante.
e à quantidade de memória RAM.

116 © 2011 IBM Corporation


Particionamentos – Algoritmos - SAME

Particionamentos SEM Chave: SAME

Same é o método de particionamento mais rápido


justamente por não alterar o particionamento já existente.

O ícone acima tem o objetivo de ilustrar a representação gráfica do particionamento SAME.

SAME, ou “mesmo”, significa que os estágios posicionados no fluxo irão herdar a mesma
ordenação/particionamento do estágio anterior, economizando o recurso de reparticionamento.

Nunca ler um arquivo sequencial e configurar o estágio subsequente com SAME partition:

1. Ao ler de um arquivo sequencial, os operadores subsequentes serão executados em sequencial


se usarem o particionamento SAME, prejudicando o paralelismo;
2. SAME é somente apropriado em casos em que os dados já estejam processando em “N”
partições, onde N>1;
3. A menos que seja extremamente necessário, evitar usar o método de particionamento SAME
no estágio subsequente a um DataSet Stage.

117 © 2011 IBM Corporation


Particionamentos – Algoritmos – AUTO & Demais Métodos

Particionamentos SEM Chave: AUTO e DEMAIS MÉTODOS

AUTO: Significa que o DataStage irá definir o melhor


método a ser utilizado, dependendo do tipo de estágio e o
que foi feito antes do posicionamento do estágio no job.

AUTO: O ícone acima ilustra o AUTO particionamento. É um tipo de particionamento onde o


DataStage escolhe, baseando-se na estrutura do estágio, qual é o melhor método de
particionamento a ser usado em tempo de execução.

• É uma boa prática usar AUTO e somente alterar o particionamento quando necessário.

RANDOM: Parecido com o Round Robin, esse método tenta balancear a distribuição dos dados.
Possui um overhead um pouco maior que o método Round Robin devido ao processamento extra
para calcular o valor randômico utilizado para cada registro.

RANGE: Divide os dados em partições com tamanhos aproximados, cada uma delas contendo
registros com coluna chave dentro de um RANGE ESPECÍFICO. Este método é também utilizado
para certificar-se de que os registros relacionados estão na mesma partição.

118 © 2011 IBM Corporation


IBM InfoSphere Information Server DataStage
TIPOS DE DADOS

119 © 2010 IBM Corporation


Volumetria – Tamanho em bytes – DataStage
Tabela 1. Principais tipos de dados básicos para cálculo de volumetria
Tipo SQL Tipo de dados no DataStage Tamanho no DataStage Observação
Date (data) Date (data) 4 bytes Data com mês, dia e ano.

*p=precisão. (Regra de arredondamento)


Decimal Numeric Decimal (Roundup(p*)+1)/2
=> resultado em bytes).
Float Real Sfloat 4 bytes IEEE precisão simples (32-bits).
Double Dfloat 8 bytes IEEE precisão dupla (64-bits).

TinyInt int8 uint8 1 byte (inteiro de 1 byte) Com ou sem sinal, considerar 8 bits.

SmallInt int16 uint16 2 bytes (inteiro de 2 bytes) Com ou sem sinal, considerar 16 bits.

Integer int32 uint32 4 bytes (inteiro de 4 bytes) Com ou sem sinal, considerar 32 bits.

BigInt int64 uint64 8 bytes (inteiro de 8 bytes) Com ou sem sinal, considerar 64 bits.

Binary, Bit, LongVarBinary,


Raw 1 byte por caractere
VarBinary

Unknown Char, LongVarChar,


String 1 byte per character ASCII, string de tamanho fixo ou variável
VarChar, Char
Tempo em dia, com resolução de
Time Time 5 bytes
segundos.
Tempo em dia, com a resolução de
Time time(microseconds) 5 bytes
microsegundos.

Timestamp Timestamp 9 bytes Data e hora resumidos num único campo.

Data e hora resumidos num único campo,


Timestamp timestamp(microseconds) 9 bytes
com resolução de microsegundos .

120 © 2011 IBM Corporation


Volumetria – Tamanho em bytes - COBOL
Tabela 2. Principais tipos de dados básicos para cálculo de volumetria - Mainframe
Tipo de dados no
COBOL Data Type Tamanho no DataStage Representação no COBOL Observações
DataStage

binary, native binary 2 bytes S9(1-4) COMP/COMP-5 int16


binary, native binary 4 bytes S9(5-9) COMP/COMP-5 int32
binary, native binary 8 bytes S9(10-18) COMP/COMP-5 int64
Character n bytes X(n) string[n] Onde n=1 byte
character for filler n bytes X(n) raw(n) Onde n=1 byte
Varchar n bytes X(n) string[max=n] Onde n=1 byte
Packed, onde a regra de
decimal (x+y)/2+1 bytes 9(x)V9(y)COMP-3 decimal[x+y,y] arredondamento é a que está
na 2ª. coluna.
decimal (x+y)/2+1 bytes S9(x)V9(y)COMP-3 decimal[x+y,y] Packed
decimal[x+y,y] or
display_numeric x+y bytes 9(x)V9(y) Zoned
string[x+y]
decimal[x+y,y] or
display_numeric x+y bytes S9(x)V9(y) zoned, trailing
string[x+y]

display_numeric x+y bytes S9(x)V9(y) sign is trailing decimal[x+y,y] zoned, trailing


display_numeric x+y bytes S9(x)V9(y) sign is leading decimal[x+y,y] zoned, leading

display_numeric x+y+1 bytes S9(x)V9(y) sign is trailing separate decimal[x+y,y] separate, trailing

display_numeric x+y+1 bytes S9(x)V9(y) sign is leading separate decimal[x+y,y] separate, leading

float 4 bytes 8 bytes COMP-1, COMP-2 sfloat dfloat floating point

121 © 2011 IBM Corporation


DOCUMENTAÇÃO COMPLEMENTAR

• Bibliografia / Colaboração:

• Mentoring & Workshop – Diretrizes de Qualidade;


• Mentoring & Workshop - Modify, Sort and Checksum Stages;
• Mentoring & Workshop - Parameter Set;
• DB2 Connector Stage – Conceitos;
• DataStage - Copia e Restauracao de Datasets.

122 © 2011 IBM Corporation


Colaboração

• Bibliografia / Colaboração:

• Documentação Oficial
http://publib.boulder.ibm.com/infocenter/iisinfsv/v8r7/index.jsp - Documentação Oficial
do IBM Information Server, IBM InfoSphere Information Server Version 8.7 Information
Center.

• InfoSphere DataStage Parallel Framework Standard Practices


http://publib-b.boulder.ibm.com/abstracts/sg247830.html?Open

123 © 2011 IBM Corporation