Juntar bases de dados – JOIN

join=<mf>[:<offset>][,<taglist>]=<mfn=_fmt>
join=<db>[:<offset>][,<taglist>]=<upkey_fmt> [jmax=<n>]
O parâmetro join permite que um ou vários registros da mesma ou outras bases de dados sejam juntados ao registro que está sendo processado neste momento. O registro em processamento pode vir de um arquivo mestre ISIS, um ISO-2709, ou um arquivo ASCII. No registro de saída serão acrescentados todos os campos dos registros referenciados (ou campos selecionados destes) e, além disto, serão criados campos de controle com a informação do processamento (numerados a
partir de 32001). Podem ser passados os seguintes argumentos para o parâmetro join:

Argumento Descrição
<mf> / <db> Uma base de dados alternativa na qual se buscarão registros para juntar com
o registro que está sendo processado. A base alternativa poderia ser a mesma
dos dados de entrada
[:offset] Deslocamento para os tags joined
[<taglist>] Uma lista dos campos que serão extraídos dos registros da base alternativa
para anexar ao registro de entrada. Se não for especificada a lista, todos os
campos que existem nos registros encontrados serão juntados. Os campos de
dados do registro encontrado poderão ser numerados.
<_fmt>
@<file>
Formato com o qual o registro de entrada é lido para extrair chaves com as
quais os registros da base de dados alternativa serão buscados. Pode ser um
formato explícito ou a referência para um arquivo externo.
<upkey_fmt> <_fmt>|@<file>
É necessário gerar a(s) chave(s) de acordo com o I/F, tipicamente em
Uppercase
[jmax=<n>] Limita a quantidade de registros que serão agregados ao registro original,
procedentes da ação do parâmetro join para cada chave gerada. Este limite se
aplica para cada parâmetro join da linha de comandos.

Exemplo:

mx cds join=autor,2,3=mhu,(v70/) create=newcds -all now

Descrição
1. Pega cada registro da base de dados cds. Para cada autor gerado pela especificação do formato mhu,(v70/), realiza uma busca na base autor.Se encontrar algum registro na base autor, acrescenta um campo de controle e acrescenta os campos 2 e 3 deste ao registro que está sendo processado.
Por último, grava o registro na base newcds. Os seguintes diagramas esquematizam o processo que se desenvolve quando MX executa o join:
eukifiz
eike
É possível especificar até 128 joins em uma linha de comando do MX. Cada join sucessivo atuará sobre o registro na sua situação atual, por isso, se um join, ou qualquer procedimento anterior na execução, modifica o registro original de entrada, o próximo join atuará sobre os dados existentes neste momento
Dica:
Veja a explicação mais adiante no parâmetro jmasx=<n>
Exemplo:
• Dispondo-se de uma base de dados AUTOR que contenha dados normalizados
de autores, como se mostra a seguir:

mfn= 1
1 «Magalhaes, A.C.»
2 «Ing. Agrónomo»
3 «1935-1990»
mfn= 2
1 «Franco, C.M.»
2 «Bioquímico»
3 «1940-»
...

É realizada a seguinte operação sobre a base cds , cujo campo 70 contém os autores.

mx cds join=AUTOR=mhu,(v70/)

Então: são somados todos os campos da base autor à base cds , são agregados os campos de controle 32001. As substituições são mostradas apenas na tela, já que não foi indicado nenhum destino para a saída.
Dica:
O procedimento supõe que a base alternativa AUTOR tem um arquivo invertido no qual se poderá encontrar as chaves produzidas pelos registros da base cds, ao serem lidos com a especificação do formato mhu, (v70/). O processo join envolve os seguintes passos:
PROCESSO DO PARÂMETRO join

Descrição No exemplo
1) Lê o registro da base de origem cds Base de origem: cds
2) Aplica o formato especificado no join ao registro lido.
O modo do formato MHU, ou MPU, é necessário em geral para obter
as chaves, devido ao fato que o arquivo ISISUC.TAB padrão converte
minúsculas em maiúsculas para a geração do arquivo invertido. O
registro lido é o registro proveniente da base cds.
mhu, (v70/)
3) Para cada chave obtida – ou seja, para cada linha gerada pelo
formato especificado – busca extrair o MFN do próximo posting
encontrado no arquivo invertido da base de dados alternativa.
Base alternativa: AUTOR
4) Acrescenta ao registro original um campo de controle (repetitivo)
32001 para o primeiro join, 32002 para o segundo join, etc. O
campo 32001 terá tantas ocorrências quantas chaves distintas
tenham sido produzidas no passo 2.
5) Lê na base alternativa o registro correspondente ao MFN obtido e
acrescenta os campos selecionados na lista <tags>. Se não for
especificado, todos os campos serão considerados.
6) Volta para o passo 2.

Lista de seleção e renumeração de campos <tags>
•Seleção:
Podem ser selecionados campos do registro alternativo das seguintes formas:

1. Indicando os números de campos e separando-os por vírgula
mx cds join=AUTOR,1,2,3=mhu,(v70/)
2. Indica-se um intervalo de campos, usando valor inferior/valor superior.
mx cds join=AUTOR,1/3=mhu,(v70/) copy=cds

•Renumeração: Indica-se o novo número de um campo, especificando como
número novo:número antigo

mx CDS "join=AUTOR,100:1=mhu,(v70/)"

Dica: Em todos os casos um campo é copiado com todas as suas ocorrências.

Deixe um comentário