Criar um Mapa de Transformação do ETL
O IntegrationHub ETL fornece uma configuração orientada que conduz você na conclusão de todas as tarefas necessárias para criar um mapa de transformação de ETL para uma integração específica.
Configuração assistida
A configuração orientada organiza todas as tarefas na ordem correta, rastreia a conclusão das tarefas e impõe todas as dependências de tarefa. Tarefas que dependem da conclusão de outras tarefas são habilitadas ou desabilitadas conforme você percorre a ferramenta e conclui as tarefas.
Use a configuração orientada na página do Assistente do mapa de transformação de ETL para concluir as tarefas a seguir.
Importar fonte de dados e especificar detalhes básicos
Forneça detalhes básicos para a integração, como a origem dos dados que você deseja integrar ao CMDB, e importe os dados de origem.
Antes de Iniciar
A fonte de dados que você planeja selecionar para o Mapa de Transformação de ETL deve existir no mesmo escopo da aplicação que está sendo usada na sessão atual.
Quando você abre um mapa de transformação de ETL, por padrão, o mapa não é validado. Você pode habilitar essa etapa de validação adicionando a propriedade do sistema sn_int_studio.validation.enabled à tabela Propriedades do sistema [sys_properties] e a definindo como true. Após a conclusão da validação, você escolhe como lidar com os erros de validação.
Função exigida: cmdb_inst_admin
Procedimento
Visualizar e preparar dados
Analise os registros de amostra dos dados de origem brutos, que serão integrados ao CMDB. Transforme e prepare os dados para alinhar as classes e os atributos de destino, se necessário.
Antes de Iniciar
O número de registros nos dados de amostra é determinado globalmente pela propriedade do sistema sn_int_studio.preview.size, que é definida como 100 por padrão. O número máximo de registros nos dados de amostra que o IntegrationHub ETL pode processar é 10.000. Se você definir essa propriedade acima do limite de 10.000, o IntegrationHub ETL processará somente até 10.000 registros e uma mensagem será exibida para informar sobre isso.
A partir do IntegrationHub ETL v3.2, você pode substituir o valor da propriedade sn_int_studio.preview.size definindo o campo Substituição de tamanho de visualização no formulário Importar dados de origem e Fornecer detalhes básicos, por mapa.
Para processar dados aninhados de uma carga aninhada, a respectiva fonte de dados deve ser definida com a opção Dados em coluna única.
Função exigida: cmdb_inst_admin
Por Que e Quando Desempenhar Esta Tarefa
As colunas de dados aninhados aparecem ao lado do restante dos dados, com uma notação de objetos aninhados no cabeçalho da coluna de dados. A contagem de itens de dados aninhados por objeto aparece com um link que permite detalhar níveis mais profundos dos dados aninhados. Para mostrar a estrutura de dados dos dados aninhados em um painel separado, habilite a opção Mostrar estrutura de dados.
O painel Estrutura de Dados tem duas opções para exibir dados aninhados:
- Árvore: dados aninhados agrupados por objetos, em que cada nó de objeto corresponde a uma entrada de registro nos dados de origem. Expanda os nós de objeto para mostrar todos os dados aninhados para o registro.
- Coleção: dados aninhados agrupados pelo objeto de nível superior (por padrão) e por itens de dados aninhados, como software. Expanda um nó, como software, para mostrar quais softwares estão instalados em cada computador.
Para obter uma demonstração sobre como trabalhar com dados de carga aninhados, assista ao vídeo Demonstração de recursos de carga útil aninhada do Integration Hub - ETL no canal do YouTube da ServiceNow.
Procedimento
Resultado
Sobre o mapeamento de colunas de dados para classes e atributos do CMDB
Existem vários requisitos e diretrizes para mapear dados de origem para classes e atributos do CMDB de destino. Além disso, há uma opção de desativar os mapeamentos de classe enquanto preserva as configurações para uma reativação fácil. Revise esses conceitos para garantir o processamento apropriado pelo Mecanismo de Identificação e Reconciliação (IRE).
Mapeamentos necessários
- Chave nativa de origem
- O IRE usa para identificar exclusivamente um registro e para criar relacionamentos e referências. Além disso, melhora o desempenho das operações de inserção e atualização. Ao processar uma carga, o IRE via gerar um erro se este campo estiver vazio.
- Carimbo de data/hora de recency de origem
O IRE usa para identificar registros que são mais antigos que o registro atual e, portanto, podem ser ignorados, para ajudar a resolver valores de atributo conflitantes. Se um valor é fornecido, ele é usado somente se posterior ao valor armazenado no momento no CMDB. Se um valor não é fornecido, o IRE atualiza o atributo com o carimbo de data/hora atual.
As propriedades do sistema a seguir permitem modificar como o IRE usa o valor source_recency_timestamp em uma carga para atualizar o atributo last_scan na tabela Origem [sys_object_source]:
Classe condicional
Uma classe condicional permite mapear diferentes conjuntos de registros de dados para diferentes classes de destino, de acordo com valores de coluna específicos ou o status de um plug-in específico.
Por exemplo, se um nome de exibição contiver "Windows", então "Windows Server" será selecionado como a classe de destino. Mas se o nome de exibição contiver "Linux", então "Linux Server" será selecionado como a classe de destino. Para registros que não atendem a nenhuma dessas condições (o nome de exibição não contém "Windows" nem "Linux"), "Server" é selecionado como a classe de destino.
Classe associada
Uma classe associada permite que você selecione a classe do CMDB a ser associada a uma tabela de destino não pertencente ao CMDB. É necessário definir uma classe associada para o processamento de IRE se a tabela não pertencente ao CMDB não estiver configurada para o processamento de IRE. Para uma tabela compatível não pertencente ao CMDB e configurada para processamento de IRE, a definição de uma classe associada é opcional. Confira Suporte do IRE para tabelas não pertencentes ao CMDB para obter mais informações.
A instância de software é uma classe não pertencente ao CMDB, mas não tem regras de IRE associadas a ela. Então, as coisas que falamos sobre isso aqui antes de Utah ainda são válidas. Mas, para classes não pertencente ao CMDB com regras de IRE, não é obrigatório ter uma associação. Por exemplo, "Se a classe de destino para mapeamento for uma classe não pertencente ao CMDB com uma referência a uma classe do CMDB, você deve selecionar a classe do CMDB com a qual associar a classe de destino não pertencente ao CMDB", a classe não pertencente ao CMDB com regras IRE, em vez de "você é obrigado a” deveria ser “você pode”. O mesmo com Exemplo não é válido para classes não pertencentes ao CMDB com regras IRE.
Se a classe de destino para mapeamento for uma classe não pertencente ao CMDB com uma referência a uma classe do CMDB, você deve selecionar a classe do CMDB com a qual associar a classe de destino não pertencente ao CMDB. Uma classe não pertencente ao CMDB se refere a uma classe, como Número de série [cmdb_serial_number], que não estende a classe Item de configuração [cmdb_ci]. A classe Entrada relacionada [cmdb_related_entry] pode conter várias associações de classe do CMDB para a mesma classe não pertencente ao CMDB. Portanto, selecione a associação apropriada para permitir que os processos de IRE atualizem a classe de destino não pertencente ao CMDB.
Por exemplo, a classe de entrada relacionada [cmdb_related_entry] tem um registro que associa a classe não pertencente ao CMDB Instância de software [cmdb_software_instance] com a classe do CMDB Pacote de software [cmdb_ci_spkg]. Se você selecionar a Instância de Software como uma classe de destino, deverá associar a classe de Instância de Software à classe Pacote de Software [cmdb_ci_spkg].
Desativando mapeamentos de classe
Ao editar um mapa de transformação de ETL, fornecido por um Conector do Service Graph, por exemplo, você pode excluir um mapeamento de classe a fim de impedir que a classe seja preenchida quando a integração for executada. No entanto, se posteriormente você decidir preencher essa classe, deverá lê-la e reconfigurar todos os mapeamentos de classe. Em vez disso, você pode desativar um mapeamento de classe para ignorar temporariamente a classe durante a execução de integração, preservando toda a configuração de mapeamento dela. A classe que você opta por desativar fica esmaecida na interface do usuário, mas você pode continuar e editar os mapeamentos de classe dela. Posteriormente, você pode reativar um mapeamento de classe para habilitar o preenchimento da classe, sem precisar reconfigurar os mapeamentos de classe.
- Aparecem em cinza claro na interface do usuário e não podem ser reativadas.
- São reativadas automaticamente quando você reativa:
- A classe que você desativou inicialmente e que desencadeou a desativação automática
- Qualquer classe da qual a classe desativada dependa
Todas as classes para as quais você desativa diretamente os mapeamentos e os mapeamentos de classe resultantes que são desativados automaticamente não são preenchidos quando a integração é executada. Além disso, todos os relacionamentos e tabelas de pesquisa associados a essas classes não são preenchidos quando a integração é executada.
- Desative uma classe da qual nenhuma classe depende e que não tenha classes associadas:
Aciona a desativação automática de quaisquer regras de pesquisa e relacionamentos associados à classe desativada.
- Desative uma regra de pesquisa, como número de série, em um mapeamento de classe:
Não desencadeia nenhuma desativação automática.
- Desative uma classe do CMDB que está associada a uma classe não pertencente ao CMDB:
- Desencadeia uma desativação automática da classe associada não pertencente ao CMDB.
- A desativação da classe não pertencente ao CMDB não afeta a classe associada do CMDB.
- Desativar uma classe com relacionamentos dependentes (aplica-se somente se o relacionamento dependente existir no IntegrationHub ETL):
- Desencadeia a desativação automática de quaisquer classes que tenham um só relacionamento dependente da classe desativada.
Se uma classe tiver vários relacionamentos dependentes, ela será desativada automaticamente somente quando você desativar todas as classes dependentes.
Por exemplo, um cenário em que a classe Sistema de Arquivos tem relacionamentos dependentes com as classes Computador e Servidor. Se você desativar a classe Computador, a classe Sistema de Arquivos não será desativada automaticamente. Somente se você desativar também a classe Servidor, a classe Sistema de Arquivos será desativada automaticamente.
- Desative uma classe condicional ou um mapeamento de classe em uma classe condicional:
- Desativar ou ativar uma classe condicional aciona uma desativação ou ativação automática de todos os mapeamentos da classe condicional.
Desativar um mapeamento de classe em uma classe condicional: evita que a classe desativada seja preenchida durante as execuções de integração. No entanto, as próprias condições associadas "If", "Else if" ou "Else" permanecem em vigor dentro da condição da classe condicional. Por exemplo, se você desativar o seguinte mapeamento de classe:
[If] [operating_system] [contains] [Linux] Then [Class] [is] [Linux Server].
Em seguida, a classe Servidor Linux não é preenchida, mas a condição [If] [operating_system] [contains] [Linux] é atendida
Mapear colunas de dados para classes e atributos do CMDB
Escolha classes e atributos de destino no CMDB para as quais mapear as colunas de dados de origem. Você pode mapear uma coluna de dados para uma classe de destino específica ou adicionar condições para que a escolha da classe de destino dependa de valores de dados específicos.
Antes de Iniciar
Por Que e Quando Desempenhar Esta Tarefa
As colunas de dados que você mapeia podem ser colunas de dados de origem que não foram transformadas ou colunas de dados transformadas. Por exemplo, para integrar uma coluna de dados nas classes Pacote de Software e Computador, selecione essas classes como classes de destino e mapeie as colunas de dados em atributos específicos dessas classes.
Quando você configura o mapeamento para uma classe, relacionamento ou regra de pesquisa, esses itens são sempre definidos inicialmente como ativados. Para obter detalhes sobre os resultados da desativação de mapeamentos, confira Como desativar mapeamentos de classe.
Procedimento
Adicionar relacionamento
Adicione relacionamentos que existem entre as classes do CMDB de destino, para uma integração.
Antes de Iniciar
- Uma classe que você deseja adicionar ao relacionamento deve estar em um estado ativado.
- Um relacionamento de base ou um relacionamento condicional, que você deseja editar, devem estar em um estado ativado.
- Em um relacionamento condicional que você deseja editar, pelo menos uma condição do relacionamento precisa estar em um estado ativado. Caso contrário, o botão Editar Relacionamento ficará esmaecido.
Função exigida: cmdb_inst_admin
Por Que e Quando Desempenhar Esta Tarefa
Ao criar relacionamentos com dados aninhados, você não pode criar um relacionamento entre objetos irmãos dos dados aninhados. Usando a carga de amostra para dados aninhados como exemplo, não é possível criar um relacionamento entre interfaces e software.
Visibilidade do ITOM, se disponível, usa padrões de descoberta aprimorados para identificar e adicionar relacionamentos de IC à tabela Relacionamentos sugeridos no sistema de base. Quando aplicável, use a tabela Relacionamentos sugeridos para selecionar relacionamentos que estejam em conformidade com os padrões Common Service Data Model (CSDM).
Procedimento
Visualizar resultados do mapeamento
Visualize os resultados da integração de dados de exemplo.
Antes de Iniciar
Por Que e Quando Desempenhar Esta Tarefa
Depois de exibir os detalhes na página de resumo, você pode retornar a qualquer etapa para fazer ajustes e executar novamente a integração.
Procedimento
Fornecer programação da integração
Configure uma programação para importar dados ao CMDB usando este mapa de transformação de ETL.
Antes de Iniciar
Procedimento
Tipos de transformação no IntegrationHub ETL
Use várias transformações no IntegrationHub ETL para converter e preparar dados de origem para mapeamento para o CMDB.
As transformações da a aplicação da Store Integration Commons for CMDB também estão disponíveis no IntegrationHub ETL.
Concatenação
Combina os valores dos campos de entrada em uma só cadeia de caracteres, juntando-os no campo opcional joining_string.
| Detalhes | |
|---|---|
| Tabela | sys_rte_eb_concat_operation |
| Campos de entrada | source_sys_rte_eb_fields |
| Campo de saída | target_sys_rte_eb_field |
| Campos adicionais | joining_string (opcional) |
| Exemplo | |
|---|---|
| Entrada | “input_1”, “input_2”, “input_3” |
| Campos adicionais | joining_string = ”, ” |
| Resultado | “input_1, input_2, input_3” |
Converter para booliano
Converte o valor de entrada para um booliano. Os valores "true" e "1" são convertidos para "true" (sem distinção entre maiúsculas e minúsculas) e qualquer outro valor é convertido para "false".
| Detalhes | |
|---|---|
| Tabela | sys_rte_eb_to_boolean_operation |
| Campos de entrada | source_sys_rte_eb_field |
| Campo de saída | target_sys_rte_eb_field |
- Todas as entradas a seguir retornam "true":
- verdadeiro
- 1
- Todas as entradas a seguir retornam "false":
- “Input_1”
- “”
- 0
- 11
Converter em Data
Tenta converter o valor de entrada em um valor GlideDateTime aplicando o date_format ao valor de entrada. Tenta converter diretamente usando GlideDateTime se date_format estiver incorreto.
| Detalhes | |
|---|---|
| Tabela | sys_rte_eb_to_date_operation |
| Campos de entrada | source_sys_rte_eb_field |
| Campo de saída | target_sys_rte_eb_field Retorna um valor vazio se não for possível analisar. |
| Campos adicionais | date_format (Formato de data simples do Java) |
| Exemplo | |
|---|---|
| Entrada | "2018/09/20 11:21:00 a.m. EST” |
| Campos adicionais | date_format = “aaaa-MM-dd hh:mm:ss a z” |
| Resultado | “2018-09-20 16:21:00” |
| Exemplo | |
|---|---|
| Entrada | "2018/09/20 01:21:00 PM EST” |
| Campos adicionais | date_format = “aaaa-MM-dd hh:mm:ss a z” |
| Resultado | “2018-09-20 18:21:00” |
| Exemplo | |
|---|---|
| Entrada | "09/20/18” |
| Campos adicionais | date_format = “aaaa-MM-dd hh:mm:ss a z” |
| Resultado | “0018-09-20 00:00:00” |
Converter em Numérico
Converte o valor de entrada em um número.
| Detalhes | |
|---|---|
| Tabela | sys_rte_eb_to_numeric_operation |
| Campos de entrada | source_sys_rte_eb_field |
| Campo de saída | target_sys_rte_eb_field Se o valor de entrada não for numérico, a saída estará vazia. |
| Exemplo | |
|---|---|
| Entrada | 1.23 |
| Resultado | 1.23 |
| Exemplo | |
|---|---|
| Entrada | 1.00 |
| Resultado | 1 |
| Exemplo | |
|---|---|
| Entrada | input_1 |
| Resultado | nulo |
| Exemplo | |
|---|---|
| Entrada | dois |
| Resultado | nulo |
Cópia
Copia o valor do campo de origem para todos os campos de destino.
| Detalhes | |
|---|---|
| Tabela | sys_rte_eb_copy_operation |
| Campos de entrada | source_sys_rte_eb_field |
| Campo de saída | target_sys_rte_eb_fields |
| Campos adicionais | overwrite_existing_value (opcional, booliano): se true, os valores dos campos de destino serão substituídos. Caso contrário, qualquer valor não vazio não será substituído. |
Extrair numérico inicial
Define o campo de destino como o primeiro valor numérico encontrado no campo de origem.
| Detalhes | |
|---|---|
| Tabela | sys_rte_eb_extract_numeric_operation |
| Campos de entrada | source_sys_rte_eb_field |
| Campo de saída | target_sys_rte_eb_field |
| Campos adicionais |
|
| Exemplo | |
|---|---|
| Entrada | “100 mb” |
| Resultado | "100” |
| Exemplo | |
|---|---|
| Entrada | “100.123 mb” |
| Resultado | “100.123" |
| Exemplo | |
|---|---|
| Entrada | “100.123 mb” |
| Campos adicionais | decimal_places = 2 |
| Resultado | “100.12” |
| Exemplo | |
|---|---|
| Entrada | “100 mb” |
| Campos adicionais | decimal_places = 2 |
| Resultado | “100.00” |
| Exemplo | |
|---|---|
| Entrada | “100 mb” |
| Campos adicionais | remainder_target_field = <field> |
| Resultado | “100” e <field> = “mb” |
Pesquisa do glide
Executa uma pesquisa no banco de dados em target_table.
| Detalhes | |
|---|---|
| Tabela | sys_rte_eb_glide_lookup_operation |
| Campos de entrada | source_sys_rte_eb_fields |
| Campo de saída | target_sys_rte_eb_fields |
| Campos adicionais |
|
| Exemplo | |
|---|---|
| Entrada |
|
| Campos adicionais |
|
| Resultado | Campo de saída 1: 25ab9c4d0a0a0bb300f7dabdc0ca7c1c |
Mínimo/Máximo
Define o campo de destino como o máximo ou mínimo dos valores de todos os campos de entrada.
| Detalhes | |
|---|---|
| Tabela | sys_rte_eb_min_max_operation |
| Campos de entrada | source_sys_rte_eb_fields |
| Campo de saída | target_sys_rte_eb_field |
| Campos adicionais |
|
| Exemplo | |
|---|---|
| Entrada | “2”, “-1”, “0” |
| Campos adicionais |
|
| Resultado | “2” |
| Exemplo | |
|---|---|
| Entrada | “a”, “b” |
| Campos adicionais |
|
| Resultado | “b” |
| Exemplo | |
|---|---|
| Entrada | “2”, “-1”, “0” |
| Campos adicionais |
|
| Resultado | “-1” |
| Exemplo | |
|---|---|
| Entrada | “a”, “b” |
| Campos adicionais |
|
| Resultado | “a” |
Script de Entrada Múltipla
Executa um script com várias entradas, definindo a saída target_field == para esse script.
Cada campo de origem está disponível dentro da variável "lote" como campos do JavaScript. O nome do campo JavaScript é o atributo do campo da entidade (observando sys_rte_eb_field.field, não sys_rte_eb_field.name).
| Detalhes | |
|---|---|
| Tabela | sys_rte_eb_multi_in_script_operation |
| Campos de entrada | source_sys_rte_eb_fields |
| Campo de saída | target_sys_rte_eb_field |
| Campos adicionais |
|
| Registro | record_type | operating_system | record_with_os |
|---|---|---|---|
| 1 | computador | Windows XP | |
| 2 | computador | Linux | |
| 3 | computador | Windows XP |
(function(batch, output) {
for (var i = 0; i < batch.length; i++) {
// batch[i] is the unique set of inputs/individual record
// batch[i].<field> gives access to the field value
var in0 = gs.nil(batch[i].record_type) ? '' : batch[i].record_type;
var in1 = gs.nil(batch[i].operating_system) ? '' : batch[i].operating_system;
// output[i] is the output for the specific combination of inputs/individual record
output[i] = in0 + "_" + in1;
}
}
})(batch, output); /* Example Script
// In this example the script input fields are 'input_field_1', 'input_field_2' - replace these with the fields used as script inputs // There is a static field 'input' that has all the input field values concatenated with a '|' (function(batch, output) {
for (var i = 0; i < batch.length; i++) {
//step1: access the input variables
var a = batch[i].input_field_1; //Value of the first source field.
var b = batch[i].input_field_2; //Value of the second source field.
//step2: Your script/code goes here.
var c = a + b;
//step3: set the output for each elements
output[i] = b;
}
})(batch, output);
*/Substituir regex
Substitui cada substring da cadeia de caracteres de entrada que corresponde ao match_regex especificado, com o valor da cadeia de caracteres replacement_regex especificado.
| Detalhes | |
|---|---|
| Tabela | sys_rte_eb_regex_replace_operation |
| Campos de entrada | source_sys_rte_eb_field |
| Campo de saída | target_sys_rte_eb_field |
| Campos adicionais |
|
| Exemplo | |
|---|---|
| Entrada | “String&With(Special)$Characters” |
| Campos adicionais |
|
| Resultado | “Cadeia de caracteres com caracteres especiais” |
Substituir
Substitui cada substring da cadeia de caracteres de entrada que corresponda a match_string especificado, com o valor da cadeia de caracteres replacement_string especificado.
| Detalhes | |
|---|---|
| Tabela | sys_rte_eb_replace_operation |
| Campos de entrada | source_sys_rte_eb_field |
| Campo de saída | target_sys_rte_eb_field |
| Campos adicionais |
|
| Exemplo | |
|---|---|
| Entrada | “Cadeia de caractere original” |
| Campos adicionais |
|
| Resultado | “Cadeia de caracteres de substiruição” |
Arredondar Numérico
Arredonda o valor do número para o número inteiro mais próximo. Itens não numéricos são sendo truncados.
| Detalhes | |
|---|---|
| Tabela | sys_rte_eb_round_numeric_operation |
| Campos de entrada | source_sys_rte_eb_field |
| Campo de saída | target_sys_rte_eb_field |
| Exemplo | |
|---|---|
| Entrada | “1.5” |
| Resultado | "2" |
| Exemplo | |
|---|---|
| Entrada | “1.4” |
| Resultado | "1" |
| Exemplo | |
|---|---|
| Entrada | "Sou uma cadeia de caracteres" |
| Resultado | "" |
Script
Execute um script com entrada, definindo target_field == saíde desse script.
Esta transformação foi substituída pela transformação Script de várias entrada e está incluída para compatibilidade raeversa com as configurações existentes.
| Detalhes | |
|---|---|
| Tabela | sys_rte_eb_script_operation |
| Campos de entrada | source_sys_rte_eb_field |
| Campo de saída | target_sys_rte_eb_field |
| Campos adicionais |
|
(function(batch, output) {
for (var i = 0; i < batch.length; i++) {
// batch[i] is the unique set of inputs/individual record
// batch[i].input gives access to the field value
var in0 = gs.nil(batch[i].input) ? '' : batch[i].input;
// output[i] is the output for the specific combination of inputs/individual record
output[i] = in0 + " modified by script”;
}
}
})(batch, output); /* Example Script
(function(batch, output) {
for (var i = 0; i < batch.length; i++) {
//step1: access the input variables
var a = batch[i].input; //Value of the source field.
//step2: Your script/code goes here.
var b = a + 1;
//step3: set the output for each elements
output[i] = b;
}
})(batch, output);
*/ Conjunto
Define o valor do campo de destino para a cadeia de caracteres especificada em set_value.
| Detalhes | |
|---|---|
| Tabela | sys_rte_eb_set_operation |
| Campos de entrada | source_sys_rte_eb_field |
| Campo de saída | target_sys_rte_eb_field |
| Campos adicionais |
|
Divisão
Divide o valor do campo de origem em splitting_string e atribui cada item resultante da divisão a target_sys_rte_eb_fields, em ordem.
| Detalhes | |
|---|---|
| Tabela | sys_rte_eb_split_operation |
| Campos de entrada | source_sys_rte_eb_field |
| Campo de saída | target_sys_rte_eb_fields |
| Campos adicionais | splitting_string (string) |
| Exemplo | |
|---|---|
| Entrada | “value1||value2||value3”, com target_sys_rte_eb_fields {target1,target2,target3} |
| Campos adicionais | splitting_string = ”||” |
| Resultado | target1 : value1, target2 : value2, target3 : value3 |
| Exemplo | |
|---|---|
| Entrada | “value1||value2||value3”, com target_sys_rte_eb_fields {target1} |
| Campos adicionais | splitting_string = ”||” |
| Resultado | target1 : value1 |
| Exemplo | |
|---|---|
| Entrada | “value1”, com target_sys_rte_eb_fields {target1,target2,target3} |
| Campos adicionais | splitting_string = ”||” |
| Resultado | target1 : value1, target2 : <null>, target3 : <null> |
Corte
Corta os espaços em branco à esquerda e à direita do valor source_sys_rte_eb_field e atribui o resultado a target_sys_rte_eb_field. Esta transformação é equivalente ao String.trim() do Java.
| Detalhes | |
|---|---|
| Tabela | sys_rte_eb_trim_operation |
| Campos de entrada | source_sys_rte_eb_field |
| Campo de saída | target_sys_rte_eb_field |
| Exemplo | |
|---|---|
| Entrada | “ value 1 ” |
| Resultado | “value 1” |
Maiúsculo
Coloca o valor source_sys_rte_eb_field em maiúsculas e atribui o resultado a target_sys_rte_eb_field.
| Detalhes | |
|---|---|
| Tabela | sys_rte_eb_upper_case_operation |
| Campos de entrada | source_sys_rte_eb_field |
| Campo de saída | target_sys_rte_eb_field |
| Exemplo | |
|---|---|
| Entrada | “value1” |
| Resultado | “VALUE1” |
Corte em Maiúsculas
Combina as transformações de maiúsculas e de corte.
| Detalhes | |
|---|---|
| Tabela | sys_rte_eb_upper_case_trim_operation |
| Campos de entrada | source_sys_rte_eb_field |
| Campo de saída | target_sys_rte_eb_field |
| Exemplo | |
|---|---|
| Entrada | “ value1 ” |
| Resultado | “VALUE1” |