Sumário

Search

  1. Prefácio
  2. A Linguagem de Transformação
  3. Constantes
  4. Operadores
  5. Variáveis
  6. Datas
  7. Funções
  8. Criação de funções personalizadas
  9. Referência de API da Função Personalizada

Referência de Linguagem de Transformação

Referência de Linguagem de Transformação

LOOKUP

LOOKUP

Pesquisa um valor em uma coluna de origem de pesquisa.
A função LOOKUP compara dados em uma origem de pesquisa a um valor que você especifica. Quando encontra o valor de pesquisa na tabela de pesquisa, o
Serviço de Integração do PowerCenter
retorna o valor de uma coluna especificada na mesma linha na tabela de pesquisa.
Ao criar uma sessão baseada em um mapeamento que usa a função LOOKUP, você deve especificar as conexões do banco de dados em $Source Connection Value e $Target Connection Value nas propriedades da sessão. Para validar uma função de pesquisa em uma transformação de Expressão, verifique se a definição de pesquisa está no mapeamento.
Essa função não tem suporte em mapplets.

Usando a Transformação de Pesquisa ou a função LOOKUP

Use a
transformação
de Pesquisa em vez da
função
LOOKUP para pesquisar valores em mapeamentos do PowerCenter. Se usar a função LOOKUP em um mapeamento, você precisará habilitar a opção de cache de pesquisa para compatibilidade 3.5 nas propriedades da sessão. Essa opção existe expressamente para os usuários do PowerMart 3.5 que desejam continuar usando a função LOOKUP, em vez de criar transformações de Pesquisa. Para obter mais informações, consulte “Transformação de Pesquisa” no
Guia de Transformação do PowerCenter
.
Você pode definir várias pesquisas para uma tabela de pesquisa dentro de uma função LOOKUP. No entanto, cada pesquisa deve encontrar um valor correspondente para retornar o valor de pesquisa.

Sintaxe

LOOKUP(
result, search1, value1 [, search2, value2]
... )
A tabela a seguir descreve os argumentos para este comando:
Argumento
Requerido/
Opcional
Descrição
resultado
Requerido
Qualquer tipo de dados, exceto Binário. Deve ser uma porta de saída na mesma tabela de pesquisa que a pesquisa. Especificará o valor retornado se a pesquisa corresponder ao valor. Sempre prefacie esse argumento com o qualificador de referência :TD.
search1
Requerido
Tipo de dados que corresponde a
value1
. Deve ser uma porta de saída na mesma tabela de pesquisa que o resultado. Especifica os valores que você deseja corresponder ao valor. Sempre prefacie esse argumento com o qualificador de referência :TD.
value1
Requerido
Qualquer tipo de dados, exceto Binário. Deve corresponder ao tipo de dados
search1
. Os valores que você deseja pesquisar na coluna de origem de pesquisa especificada em
search1
. Você pode inserir qualquer expressão de transformação válida.

Valor de Retorno

Resultado
se todas as pesquisas encontrarem valores correspondentes. Se encontrar valores correspondentes, o
Serviço de Integração do PowerCenter
retornará o resultado da mesma linha que o argumento
search1
.
NULL se a pesquisa não encontrar nenhum valor correspondente.
ERROR se a pesquisa encontrar mais de um valor correspondente.

Exemplo

A seguinte expressão pesquisa a origem de pesquisa:TD.SALES para uma ID de item e preço específicos e retornará o nome do item se ambas as pesquisas encontrarem uma correspondência:
LOOKUP( :TD.SALES.ITEM_NAME, :TD.SALES.ITEM_ID, 10, :TD.SALES.PRICE, 15.99 )
ITEM_NAME
ITEM_ID
PRICE
Regulator
5
100.00
Flashlight
10
15.99
Halogen Flashlight
15
15.99
NULL
20
15.99
RETURN VALUE:
Flashlight

Dicas para LOOKUP

Ao comparar valores de char e varchar, a função LOOKUP retornará um resultado somente se as duas linhas corresponderem. Isso significa que o valor e o tamanho de cada linha devem corresponder. Se a origem de pesquisa for um valor char preenchido de um tamanho especificado e a pesquisa for um valor varchar, você precisará usar a função RTRIM para excluir espaços em branco de trilha da origem de pesquisa para que os valores correspondam à pesquisa:
LOOKUP(:TD.ORDERS.PRICE, :TD.ORDERS.ITEM, RTRIM( ORDERS.ITEM, ' '))
Use o qualificador de referência :TD nos argumentos
resultado
e
pesquisa
de uma função LOOKUP:
LOOKUP(:TD.ORDERS.ITEM, :TD.ORDERS.PRICE, ORDERS.PRICE, :TD.ORDERS.QTY, ORDERS.QTY)