Usando Operadores de Fluxo de Dados

No Data Integration, operadores de fluxo de dados representam origens de entrada, destinos de saída e transformações que podem ser usados em um fluxo de dados.

No painel Operadores, arraste os operadores para a tela a fim de criar um fluxo de dados. Em seguida, use a guia Detalhes no painel Propriedades para configurar as propriedades básicas e obrigatórias de cada operador. Quando aplicável, use a guia Opções avançadas para especificar outras propriedades.

Em geral, um operador de fluxo de dados pode ter uma ou mais portas de entrada e uma ou mais portas de saída para que os dados fluam. Por exemplo, você pode conectar a mesma porta de saída de origem às portas de entrada em um operador de filtro, junção e destino. Você também pode conectar outro operador de origem à mesma porta de entrada de junção.

Um fluxo de dados deve incluir pelo menos um operador de origem e um de destino para ser válido. Enquanto o serviço Data Integration suporta vários operadores de destino em um fluxo de dados, um operador de destino só pode ter uma porta de entrada.

Para conectar operadores, passe o mouse sobre um operador até ver o conector (círculo pequeno) no lado direito do operador. Em seguida, arraste o conector para o próximo operador ao qual você deseja se conectar. Uma conexão é válida quando uma linha conecta os operadores depois que você solta o conector.

Uma linha de conexão simboliza como os dados fluem de um nó para outro. Embora seja possível arrastar um conector visível de um objeto para outro, não é possível ter mais de uma linha de conexão de entrada para um operador de filtro, expressão, agregação, distinto, classificação e destino.

Importante

Para tipos de dados complexos, consulte Tipos de Dados Hierárquicos para entender o que é suportado. Talvez você não consiga executar algumas configurações na guia Atributos e na guia Dados do painel Propriedades.

Operadores de Dados

O Data Integration fornece o operador de origem e o operador de destino para adicionar entidades de dados de entrada e saída a fim de servir como entrada para fluxos de dados e de saída para dados transformados.

Selecionando um ativo de dados, uma conexão e um esquema

Para configurar a entidade de dados de entrada ou saída para um operador de dados em um fluxo de dados, comece selecionando um ativo de dados, uma conexão e um esquema (ou bucket).

Você só faz as seleções na ordem conforme exibido na guia Detalhes do painel Propriedades, clicando em Selecionar quando a opção estiver ativada ao lado do tipo de recurso.

Por exemplo, quando você adiciona pela primeira vez um operador de origem, somente o Ativo de dados é ativado para seleção. A opção de seleção para o tipo de recurso subsequente, Conexão, só é ativada depois que você faz uma seleção para o objeto anterior.

Quando você clica em Selecionar ao lado de um recurso, um painel é exibido para que você selecione o objeto desejado. Você pode usar o menu de recursos para selecionar o objeto ou selecionar Exibir tudo para usar outro painel para procurar ou pesquisar e, em seguida, selecionar o objeto.

Ao selecionar um objeto de recurso, cada seleção subsequente será baseada na relação pai/filho herdada da seleção anterior. Uma trilha de navegação na parte superior do painel de seleção mostra a hierarquia de seleção. Por exemplo, vamos supor que você tenha selecionado o ativo de dados "Ativo de dados 1 do Oracle Database" e a "Conexão padrão". Quando você seleciona o Esquema, a trilha de navegação é exibida como "Dados do Oracle Database asset1 usando a conexão Padrão".

Selecionando uma entidade de dados

Depois de selecionar um ativo de dados, uma conexão e um esquema (ou um bucket), você seleciona uma entidade de dados na lista de entidades de dados disponíveis.

Em geral, você pode fazer o seguinte no painel Procurar entidades de dados:

  • Procure as entidades de dados disponíveis e selecione uma entidade por seu nome.

  • Filtre a lista disponível para pesquisar e selecione. No campo de pesquisa, informe um nome parcial ou completo da entidade e pressione Enter para iniciar a pesquisa. A pesquisa faz distinção entre maiúsculas e minúsculas. Por exemplo, se as entidades de dados disponíveis incluírem BANK_US e BANK_EU, digite BANK e selecione na lista filtrada.

  • Use um ou mais parâmetros na string de pesquisa. Por exemplo: CUSTOMERS_${COUNTRY}

    Para usar um nome de entidade de dados parametrizado para selecionar o recurso de entrada ou saída, consulte Usando Parâmetros em Nomes de Entidade de Dados.

Dependendo do tipo de ativo de dados de um recurso, depois de selecionar uma entidade de dados, talvez seja necessária mais configuração na guia Detalhes ou na guia Opções avançadas no painel Propriedades.

Atribuindo parâmetros a objetos de recurso

Para impedir que um objeto de recurso, como um ativo de dados ou uma conexão em um fluxo de dados, fique permanentemente vinculado a um recurso específico, designe um parâmetro a esse objeto.

Você pode designar o parâmetro depois ou antes de selecionar o objeto de recurso.

  • No fluxo de dados, adicione o operador de origem ou de destino. Após fazer uma seleção para um tipo de recurso, selecione Designar parâmetro ao lado do nome do recurso para usar outro painel a fim de selecionar e atribuir um parâmetro para o objeto selecionado. Se um tipo de parâmetro adequado não estiver disponível, você poderá adicionar um parâmetro e depois designá-lo.

    Observação

    A opção Designar parâmetro não está disponível para uma entidade de dados cujo nome inclui um parâmetro (como BANK_${REGION}). Não é possível vincular um recurso de entidade parametrizado a outro parâmetro.
  • Como alternativa, adicione o operador de origem ou de destino e selecione Designar parâmetro para usar um painel para designar um parâmetro e selecione o recurso para o objeto ao mesmo tempo. No painel Adicionar parâmetro, você seleciona um recurso com base na relação pai-filho herdada da seleção anterior. A trilha de navegação na parte superior do painel mostra a hierarquia de seleção.

Consulte também Usando Parâmetros de Fluxo de Dados.

Usando parâmetros em nomes de entidade de dados

Você pode incluir um ou mais parâmetros de fluxo de dados no nome do recurso de entidade de dados especificado para um operador de dados.

A sintaxe a ser usada para um parâmetro de fluxo de dados em um nome de entidade de dados é ${PARAMETER_NAME}. Por exemplo: CUSTOMERS_${COUNTRY}

Um nome de parâmetro faz distinção entre maiúsculas e minúsculas, e cada parâmetro deve ter um valor padrão.

Por exemplo, CUSTOMERS_${COUNTRY} pode retornar a tabela de banco de dados CUSTOMERS_USA e BANK_${COUNTRY}/* pode retornar os arquivos do serviço Object Storage em BANK_EU.

Para usar parâmetros em nomes de entidades de dados ao configurar um operador de dados, você pode:

  • Adicione o parâmetro ao fluxo de dados antes de adicionar o operador de dados
  • Adicione o parâmetro no momento em que você estiver configurando a entidade de dados do operador

Como adicionar um parâmetro

Em um fluxo de dados, selecione Parâmetros no menu Exibir da barra de ferramentas da tela para abrir o painel Parâmetros.

No painel Parâmetros, selecione Configuração e, em seguida, Adicionar.

No painel Adicionar parâmetro, configure um parâmetro do tipo de dados apropriado, por exemplo, VARCHAR ou NUMERIC, e adicione um valor padrão.

Durante a configuração da entidade de dados em um fluxo de dados, você pode pesquisar entidades de dados disponíveis informando o nome do parâmetro no painel Procurar entidades de dados. No campo de pesquisa, comece a digitar ${ seguido por qualquer caractere. Se a parte frontal do nome do parâmetro corresponder aos parâmetros existentes no fluxo de dados, uma lista de nomes sugeridos será exibida. Selecione um parâmetro na lista, complete a sintaxe adicionando } e pressione Enter.

Como adicionar um parâmetro no momento da configuração da entidade de dados

No painel Procurar entidades de dados, você pode fazer o seguinte:

  • No menu Mais ações, selecione Adicionar parâmetro de fluxo de dados para usar o painel Adicionar parâmetro de fluxo de dados. Especifique o tipo de dados, o valor padrão e outras propriedades do parâmetro que deseja adicionar e usar.

  • No campo de pesquisa, comece a digitar ${ seguido por qualquer caractere. Se a parte frontal do nome do parâmetro corresponder aos parâmetros existentes no fluxo de dados, uma lista de nomes sugeridos será exibida. Selecione um parâmetro na lista, complete a sintaxe adicionando } e pressione Enter.

  • No campo de pesquisa, digite o nome do parâmetro, por exemplo, ${PARAMETER_NAME}). Se o nome do parâmetro ainda não existir no fluxo de dados e você pressionar Enter, o Data Integration exibirá o painel Adicionar parâmetro de fluxo de dados. Se preferir, depois de digitar o nome do parâmetro, selecione Adicionar parâmetro de fluxo de dados no menu Mais ações.

    No painel Adicionar parâmetro de fluxo de dados, especifique o tipo de dados, o valor padrão e outras propriedades do parâmetro que você deseja adicionar e usar.

Operador de Origem

Use o operador de origem para especificar as entidades de dados que servem de entrada para o fluxo de dados.

Adicionando e configurando um operador de origem

Você pode adicionar vários operadores de origem em um fluxo de dados.

Importante

Se você estiver usando uma entidade de dados hierárquicos para um operador de origem, consulte Tipos de Dados Hierárquicos para entender o suporte. Talvez você não consiga executar algumas configurações na guia Atributos ou na guia Dados do painel Propriedades.
  1. No painel Operadores, arraste um operador de Origem para a tela.
  2. Com o operador de origem em foco, na guia Detalhes do painel Propriedades, digite um nome para o operador de origem no campo Identifier ou deixe o nome padrão como está.
  3. Para configurar a origem de entrada para esse operador, selecione o ativo de dados, a conexão e o esquema (ou o bucket) clicando em Selecionar à medida que ele fica disponível ao lado do tipo de recurso. Consulte as descrições a seguir para obter mais informações sobre o tipo de ativo de dados que você está selecionando para este operador de origem.
    Tipo de ativo de dados Descrição

    Serviço Object Storage

    Amazon S3

    HDFS

    Clique em Selecionar ao lado de Bucket para selecionar o compartimento e, em seguida, selecione o bucket.

    Depois de selecionar o ativo de dados, a conexão e o bucket, vá para a etapa 5 para selecionar uma entidade de dados.

    Ativo de dados REST genérico

    Depois de selecionar uma conexão, o URL base que você informou ao criar o ativo de dados é exibido. Siga estas etapas para configurar a origem:

    • Clique em Selecionar ao lado de Recurso para selecionar um ponto final.

    • Clique em Selecionar ao lado de Operação para selecionar uma operação para o ponto final.

    • Para obter mais propriedades, consulte a etapa 7.

    Oracle Fusion Applications usando o Oracle BI Cloud Connector (BICC)

    Para Esquema, selecione a oferta BICC. A oferta BICC selecionada fornece os objetos de exibição BICC (VO) para extração de dados.

    Depois de selecionar um ativo de dados, uma conexão e um esquema, vá para a etapa 4 para selecionar uma entidade de dados.

    Oracle Fusion Applications usando o Oracle BI Publisher (BIP)

    Para Ativo de dados:

    Para usar um ativo de dados BIP em um fluxo de dados, você precisa de um bucket do Object Storage como local de preparação. Se você selecionar um ativo de dados que não tenha um local de preparação padrão especificado nesse ativo de dados, o Data Integration exibirá uma notificação de advertência. Quando você vir a notificação, escolha uma das seguintes opções:
    • Selecione Atualizar ativo de dados para adicionar um local de preparação padrão a esse ativo de dados.
    • Clique em Selecionar ao lado de Local de preparação no painel Propriedades para selecionar o ativo de dados do Object Storage que tem o bucket que você deseja usar para preparação.

    Para Esquema:

    Selecione a pasta BIP que contém o relatório como o esquema.

    Consulte Extrair dados do BIP no Data Integration para obter detalhes sobre:
    • Preparando o relatório BIP e sua consulta SQL
    • Configurando a divisão em blocos
    • Usando parâmetros BIP personalizados

    Depois de selecionar um ativo de dados, uma conexão e um esquema, vá para a etapa 4 para selecionar uma entidade de dados.

    Outros ativos de dados que não são Armazenamento de Objetos, Amazon S3 ou HDFS

    Depois de selecionar um ativo de dados, uma conexão e um esquema, vá para a etapa 4 para selecionar uma entidade de dados.

  4. Para selecionar uma entidade de dados que não seja de um ativo de dados do Object Storage, Amazon S3 ou HDFS:
    1. Observe o seguinte no painel Selecionar entidade de dados. Quando aplicável, você pode:
      • Usar o menu Entidade de dados para selecionar uma entidade de dados por seu nome.

      • Selecione Procurar Entidades de Dados para usar outro painel para procurar ou pesquisar a lista disponível e, em seguida, selecione uma entidade de dados.

        Consulte Selecionando uma Entidade de Dados, se precisar de ajuda para pesquisar a lista usando um nome completo ou parcial.

        Você pode incluir um ou mais parâmetros de fluxo de dados no nome de uma entidade de dados selecionada, usando a sintaxe ${PARAMETER_NAME}. Por exemplo: BANK_${REGION}

        Consulte Usando Parâmetros em Nomes de Entidades de Dados, se precisar de ajuda para adicionar e usar parâmetros ao configurar nomes de entidades.

    2. Dependendo do tipo de ativo de dados para este operador de origem, selecione a entidade de dados e conclua mais configuração, se aplicável.
      Tipo de ativo de dados Descrição

      Oracle Database

      Oracle Database no Amazon RDS

      Oracle Siebel

      Oracle Peoplesoft

      Oracle E-Business Suite

      Oracle ATP e ADW

      MySQL

      MySQL ondas de calor

      MySQL no Amazon RDS

      Amazon RDS para SQL Server

      Microsoft SQL Server

      Banco de Dados SQL do Microsoft Azure

      IBM DB2

      Nos Detalhes:

      • Selecione a entidade de dados por nome.

      • Se aplicável, selecione Inserir SQL personalizado para inserir uma única instrução SQL no editor.

        Ao fornecer uma instrução de consulta SQL, você pode definir uma entidade de origem do banco de dados e a forma da entidade ao mesmo tempo. Por exemplo, você pode definir e filtrar os dados em uma instrução SQL, em vez de adicionar um operador de filtro depois de definir a entidade a ser usada para o operador de origem.

        Observação: em instruções SQL, use aspas simples em torno de parâmetros. Por exemplo: select * from ORDERS where Created_On >= '${SYS.LAST_LOAD_DATE}'

        Depois de informar a consulta SQL, selecione Validar para verificar se há erros na instrução.

      • Se disponível e aplicável, siga estas etapas para carregar apenas registros novos ou atualizados da origem para o destino:

        • Marque a caixa de seleção Carga incremental para identificar e carregar somente as linhas que foram criadas ou modificadas desde a última vez em que o processo de carga foi executado.

        • Para Coluna de marca d'água, selecione a coluna usada para marcar as linhas que foram carregadas incrementalmente. Somente as colunas DATE, TIMESTAMP e DATETIME podem ser usadas como coluna de marca d'água.

      Oracle Fusion Applications usando o Oracle BI Cloud Connector (BICC)

      Na guia Detalhes: Selecione um objeto de view BICC (VO) como a entidade de dados da qual extrair dados. Em seguida, use o menu Estratégia de extração para escolher como os dados de origem serão extraídos.

      • Completo: Extrai e carrega todos os dados da Data inicial da extração opcional que você especifica. Se você não informar uma data em Data inicial da extração, todos os dados serão extraídos.
      • Incremental: Extrai e carrega somente dados criados ou modificados após uma data específica.
        • Selecione Gerenciado para usar a última data rastreada e gerenciada pelo Data Integration. Você não especifica explicitamente uma data.
          Importante

          A opção Gerenciado extrai 24 horas extras de dados no passado.

          O Data Integration adiciona o parâmetro SYS.LAST_LOAD_DATE para rastrear a data da última carga ou execução da tarefa e armazena a última data de carga bem-sucedida como marca d'água em execuções consecutivas. Quando a tarefa for executada, você poderá alterar o valor da última data armazenada no sistema.

        • Selecione Personalizado para fornecer a data você mesmo no campo Data da última extração.

      Em seguida, selecione outro Armazenamento de configuração externa do BICC para os dados extraídos, se você não quiser usar o Padrão de ativo de dados. O Padrão de ativo de dados é o armazenamento externo do BICC configurado no ativo de dados do Fusion Applications BICC quando o ativo foi criado ou editado.

      Opcionalmente, conclua o seguinte na guia Opções avançadas:

      Selecione Ativar broker do BI se quiser que o extrator do BICC leia linhas de entrada diretamente no banco de dados do Fusion Applications, em vez de um caminho de extração regular.
      Importante

      • O modo de broker de BI é uma opção de otimização de desempenho para usuários avançados.
      • O modo de broker do BI é um recurso BICC suportado apenas para alguns armazenamentos de dados. Falha na extração para armazenamentos de dados que não são suportados.
      • Com a opção de broker do BI, o desempenho da extração pode melhorar porque as consultas são executadas diretamente nos armazenamentos de dados no banco de dados subjacente. A melhoria do desempenho depende do armazenamento de dados, da carga de trabalho atual no servidor de BI, da carga de trabalho atual no banco de dados e de outros fatores.
      • Em algumas situações, ativar o modo de broker do BI altera os tipos de dados da coluna de origem.
      Se você não selecionar Ativar broker do BI, os dados serão extraídos por meio do servidor do BI. Para obter mais informações, consulte Modo de Extração do Corretor em Configurar Ofertas para Extração do guia Criando um Extrato do Business Intelligence Cloud. O guia BICC faz parte da lista de livros Applications Common na documentação do Oracle Fusion Cloud Applications Suite.

      Para Propriedades da coluna do BICC, selecione o tipo de colunas da origem do BICC para incluir como atributos no destino.

        • Todas: Todas as colunas do PVO BICC são incluídas. No entanto, colunas com nomes que começam com ExtnAttribute ou colunas que têm o mesmo nome e label não são exibidas.

        • Somente padrão: Somente as colunas ativadas para extração por padrão no PVO BICC são incluídas. Ela exibe todas as colunas, incluindo as colunas Flex.

        • Chaves padrão e principais: Colunas padrão e principais do PVO BICC são incluídas. Ela exibe todas as colunas, incluindo as colunas Flex.

        • Somente chaves primárias: Somente as colunas primárias do PVO BICC são incluídas. Ela exibe todas as colunas, incluindo as colunas Flex.

      Oracle Fusion Applications usando o Oracle BI Publisher (BIP)

      Na guia Detalhes:

      • Para Entidade de Dados, selecione um relatório. Consulte o blog Extrair dados do Oracle Fusion Applications usando BIP no Data Integration para obter um lembrete do local do relatório.
      • Especifique o local de preparação, que é o bucket do Object Storage para preparar os dados extraídos. Se o ativo de dados selecionado tiver um local de preparação padrão especificado, o Data Integration usará automaticamente o ativo de dados e o bucket do Object Storage especificados como o local de preparação padrão nesse ativo de dados. Se o ativo de dados selecionado não tiver um local de preparação padrão especificado, você poderá selecionar o ativo de dados do Object Storage que tem o bucket que deseja usar para preparação. Caso contrário, você pode atualizar o ativo de dados para adicionar um local de preparação padrão ou selecionar outro ativo de dados.

      Em seguida, conclua o seguinte na guia Opções avançadas:

      • Selecione Ativar limite de linhas para especificar o número máximo de linhas a ser recuperado.

      • No campo Limite de linhas, especifique o limite de linhas.

      • Se você espera um grande volume de dados, especifique o tamanho no campo Tamanho do chunk em Ativar chunking. Tamanho do chunk será obrigatório se o limite de linhas especificado for maior que 100000.

        Para obter ajuda com o chunking, consulte o blog Extrair dados do Oracle Fusion Applications usando BIP no Data Integration.

      • A seção Propriedades BIP exibe os parâmetros do relatório BIP do relatório selecionado para a entidade de dados. Selecione uma propriedade cada nos campos Número de linhas retornadas e Deslocamento inicial. Não é possível selecionar a mesma propriedade para os dois campos.
      • Para carregar apenas registros novos ou atualizados da origem para o destino:
        • Marque a caixa de seleção Carga incremental para identificar e carregar somente os dados criados ou modificados desde a última vez em que o processo de carga foi executado.
        • Para Coluna de marca d'água, selecione a propriedade usada para marcar dados que foram carregados incrementalmente.
    3. Depois de selecionar uma entidade de dados, o nome da entidade de dados selecionada é exibido ao lado de Entidade de dados na guia Detalhes no painel Propriedades.
      • Se você tiver fornecido uma instrução SQL, o rótulo SQL_ENTITY<nnnnnnnnn> será exibido, por exemplo: SQL_ENTITY123456789

      • Se você tiver usado um parâmetro no nome da entidade, o label incluirá o nome do parâmetro, por exemplo: BANK_${REGION}

        Observação

        Para uma entidade de dados que inclua um parâmetro no nome, você não pode vincular o recurso de entidade a outro parâmetro. A opção Designar parâmetro não está disponível.

  5. Para selecionar uma entidade de dados que seja de um ativo de dados do Object Storage, Amazon S3 ou HDFS:
    1. Use o painel Selecionar entidade de dados para selecionar uma única entidade por nome ou selecione uma ou mais entidades usando uma expressão de padrão.
      • Selecione Procurar por nome para usar outro painel a fim de procurar ou pesquisar a lista disponível e, em seguida, selecione uma entidade por nome.

        Consulte Selecionando uma Entidade de Dados, se precisar de ajuda para pesquisar a lista usando um nome completo ou parcial.

        Você pode incluir um ou mais parâmetros de fluxo de dados no nome de uma entidade de dados selecionada, usando a sintaxe ${PARAMETER_NAME}. Por exemplo: BANK_${REGION}.csv

        Consulte Usando Parâmetros em Nomes de Entidade de Dados, se precisar de ajuda para adicionar e usar parâmetros ao configurar uma entidade de dados por nome.

      • Selecione Procurar por padrão para usar uma expressão regular (incluindo curingas) para selecionar uma ou mais entidades que correspondem a um diretório específico e padrão do arquivo. Por exemplo, digite CUSTOMERS* no campo e pressione Enter para filtrar a lista. Consulte Testando e Usando um Padrão.

        Você também pode incluir parâmetros na expressão de padrão usando a sintaxe ${PARAMETER_NAME}. Por exemplo: CUSTOMERS_${REGION}/*

        Consulte Usando Parâmetros em Nomes de Entidade de Dados, se precisar de ajuda para adicionar e usar parâmetros ao configurar nomes de entidade de dados por padrão.

        Observação

        Quando você usa uma expressão de padrão, presume-se que todos os arquivos correspondentes ao padrão tenham a mesma estrutura. Os arquivos correspondentes são tratados como entidade única no fluxo de dados. Quaisquer novos arquivos futuros que corresponderem ao padrão também serão processados.

        Para uma entidade de dados que inclua um parâmetro no nome, você não pode vincular o recurso de entidade a outro parâmetro. A opção para designar um parâmetro não está disponível.

    2. Depois de fazer a seleção da entidade de dados por nome ou por padrão, preencha a configuração da entidade no painel Selecionar entidade de dados.

      A forma como você conclui a configuração depende do Tipo de arquivo escolhido para a entidade de dados selecionada.

      Tipo de arquivo Descrição

      CSV

      Se você usou Procurar por nome para selecionar a entidade de dados, poderá selecionar Visualizar dados brutas para exibir as 10 primeiras linhas do arquivo.

      Selecione o Tipo de compactação (método de compactação) usado. Se você não souber o método de compactação usado para compactar o arquivo, selecione Automático (Padrão).

      A Codificação padrão é UTF-8, que não pode ser alterada.

      Outras configurações que você pode configurar são:

      • Se a primeira linha do arquivo for uma linha de cabeçalho, selecione Sim para Possui cabeçalho.
      • Se os valores nas linhas de dados tiverem várias linhas, selecione Sim para Diversas Linhas.
      • Especifique o Caractere de escape que escapa outros caracteres encontrados nos valores de dados. Por exemplo: \
      • Selecione o caractere Delimitador que separa os campos de dados. Por exemplo: COLON (:), COMMA (,), PIPE (|), SEMICOLON (;) ou TAB (\t)
      • Se um delimitador de coluna estiver incluído no final de uma linha de dados no arquivo, selecione Sim para Delimitador final.
      • Especifique o Caractere de aspas que trata outros caracteres como literais. Por exemplo: "

      JSON

      Selecione o Tipo de compactação (método de compactação) usado. Se você não souber o método de compactação usado para compactar o arquivo, selecione Automático (Padrão).

      A Codificação padrão é UTF-8, que não pode ser alterada.

      Selecione Usar esquema personalizado para colar ou fazer upload de um esquema de amostra personalizado que é usado para inferir a forma da entidade. Quando essa caixa de seleção é marcada, o desvio de esquema não é mais aplicável na entidade de origem.

      • Se você selecionar Fazer Upload, elimine um arquivo de esquema personalizado na caixa fornecida ou clique em Selecionar um arquivo para selecionar o arquivo de esquema para upload.

      • Se você selecionar Colar no esquema, copie o conteúdo do arquivo de texto do esquema e cole-o na caixa fornecida.

      PARQUET

      O Tipo de compactação padrão é Automático, o que não pode ser alterado.

      AVRO

      O Tipo de compactação padrão é Automático, o que não pode ser alterado.

      EXCELENTE

      Somente arquivos XLSX são suportados.

      O Tipo de compactação padrão é Automático, o que não pode ser alterado.

      Por padrão, o Data Integration trata a primeira linha de um arquivo como uma linha de cabeçalho. Se a primeira linha de um arquivo não for uma linha de cabeçalho, selecione Não para Possui cabeçalho.

      Para Selecionar entidade por, você pode escolher os critérios como Nome da planilha, Índice da planilha ou Nome da tabela. Em seguida, informe um Valor para o nome da planilha, índice da planilha ou nome da tabela. O índice da planilha é baseado em zero.

      Para Nome da planilha ou Índice da planilha, informe a área do arquivo a ser usada como o Intervalo de dados para seleção. Se você não informar um valor de intervalo de dados, o padrão será o intervalo de dados A1, que corresponde à planilha inteira. Se o arquivo tiver uma linha de cabeçalho, informe um valor que comece na linha de cabeçalho, por exemplo, A1:K56.

    3. Após concluir a configuração da entidade de dados, clique em Selecionar.

      Você será levado de volta à guia Detalhes no painel Propriedades. O nome da entidade de dados ou da expressão de padrão de entidade selecionada é exibido ao lado de Entidade de dados. Por exemplo, CUSTOMERS_EU.csv, CUSTOMERS* ou CUSTOMERS_${REGION}/*

      Observação

      Para uma entidade de dados que inclua um parâmetro no nome, você não pode vincular o recurso de entidade a outro parâmetro. A opção Designar parâmetro não está disponível.

    4. Se disponível e aplicável, marque a caixa de seleção Carga incremental para identificar e carregar apenas os dados criados ou modificados desde a última vez em que o processo de carga foi executado com sucesso.

      Para ativos de dados de arquivo, como o Object Storage, o Data Integration executa a extração incremental com base na data da última modificação (timestamp) dos objetos selecionados em uma pasta ou selecionados por um padrão de arquivo.

      Por exemplo, suponha que em 5 de janeiro haja três arquivos no bucket do Object Storage: EMPLOYEE_1.csv, EMPLOYEE_2.csv, EMPLOYEE_3.csv

      Se um job de carga for executado com êxito em 5 de janeiro, todos os três arquivos serão processados.

      • Em 6 de janeiro, um novo arquivo EMPLOYEE_4.csv é adicionado ao bucket; esse arquivo tem a data da última modificação (timestamp) de 6 de janeiro. Se um job de carga for executado em 6 de janeiro, somente EMPLOYEE_4.csv será selecionado e processado para carregamento de dados incremental.
      • Em 6 de janeiro, um novo arquivo EMPLOYEE_4.csv é adicionado ao bucket; esse arquivo tem a data da última modificação (timestamp) de 6 de janeiro. O arquivo EMPLOYEE_2.csv também é modificado em 6 de janeiro. Se um job de carga for executado em 6 de janeiro, os arquivos EMPLOYEE_2.csv e EMPLOYEE_4.csv serão selecionados para processamento.
  6. (Opcional) Na guia Detalhes, selecione o ícone de atualização ao lado do nome da entidade selecionada para garantir que você esteja usando os esquemas mais recentes da entidade durante a sessão de trabalho atual no designer. Somente os metadados da entidade são extraídos, não as alterações de dados reais.
  7. (Opcional) Na guia Opções avançadas, dependendo do tipo de ativo de dados para esse operador de origem, você pode selecionar ou limpar as opções aplicáveis.

    Item Descrição

    Extrair metadados do arquivo como atributos

    Marque a caixa de seleção para incluir metadados de arquivo (como nome e tamanho) como atributos nos dados retornados.

    Caracteres especiais (incluindo espaço) nos nomes de arquivo não são suportados.

    Permitir desvio de esquema

    Por padrão, a divergência de esquema é ativada para permitir que o Data Integration trate dinamicamente as alterações de definição de esquema durante o design time e o runtime do fluxo de dados. Divergência de esquema são alterações nas definições de esquema na entidade de dados especificada. As alterações incluem atributos adicionados ou removidos, bem como tipos de dados de atributos ou nomes de entidades alterados.

    Se você desmarcar a caixa de seleção Permitir divergência de esquema, desativará a divergência de esquema para bloquear as definições de esquema quando o fluxo de dados for definido. Quando a divergência de esquema é desativada, o serviço Data Integration usa uma forma fixa da entidade de dados especificada mesmo quando a forma subjacente foi alterada.

    Se um esquema personalizado for selecionado, o desvio de esquema não será aplicável e essa opção não poderá ser selecionada.

    Tratar arquivo ausente como vazio

    Somente para um ativo de dados do Object Storage.

    Essa caixa de seleção só estará disponível quando a opção Permitir desvio de esquema não estiver selecionada.

    Permitir pushdown

    Por padrão, o pushdown é ativado para permitir que o Data Integration use o sistema de banco de dados de origem para processar operações de transformação, se o sistema suportar pushdown. Somente bancos de dados Oracle, o Oracle Autonomous Data Warehouse, o Oracle Autonomous Transaction Processing e o MySQL suportam pushdown. Menos dados são extraídos da origem quando o serviço Data Integration usa o sistema de banco de dados de origem para processar operações.

    Ao desmarcar a caixa de seleção Permitir pushdown, você desativa o pushdown. Quando o pushdown é desativado, o serviço Data Integration extrai todos os dados diretamente do sistema de origem e, em seguida, processa as transformações.

    Configurações de parâmetro e cabeçalho

    Somente para um ativo de dados REST.

    Use as definições de Parâmetro e Cabeçalho para configurar mais propriedades de origem.

  8. Na guia Atributos, exiba os atributos da entidade de dados selecionada. Para um ativo de dados do Fusion Applications BICC, os atributos são as colunas do BICC do VO que você selecionou.

    Você pode selecionar atributos individuais ou usar ícones de filtro para filtrar a lista de atributos. Em seguida, aplique as regras de exclusão em massa aos atributos selecionados ou filtrados.

    • Selecione o ícone de filtro na coluna Nome para filtrar atributos por um padrão de nome. No campo de filtro, digite uma expressão regular simples. Você pode usar os curingas ? e * no padrão regex.
    • Selecione o ícone de filtro na coluna Tipo para filtrar atributos por um tipo de dados. Use o menu para selecionar o tipo a ser usado como filtro.
      Observação

      Você só pode aplicar um filtro de padrão de nome, mas vários filtros de tipo por vez. Por exemplo, para filtrar pelo padrão de nome *_CODE e pelo tipo numérico ou varchar, você aplica um filtro de padrão de nome (*_CODE) e dois filtros de tipo (numérico, varchar).
    • Use o menu Ações para aplicar regras de exclusão em massa aos atributos selecionados ou filtrados. Selecione Excluir por seleção ou Excluir por filtro aplicado.
    • Selecione Verificar regras para abrir o painel Regras. Você pode exibir e gerenciar as regras que foram aplicadas à entidade de dados. Por padrão, a primeira regra no painel Regras inclui tudo.

    Um tipo complexo é mostrado como ARRAY (tipo de dados), COMPOSITE ou MAP (tipo de chave, tipo de valor). Consulte Tipos de Dados Hierárquicos para entender o que é suportado para tipos complexos.

  9. Na guia Dados, exiba uma amostra dos dados, com base na configuração do operador e em todas as regras aplicadas na guia Atributos.

    Para um ativo de dados do Fusion Applications BICC, apenas 10 linhas de dados são mostradas.

    O Perfil de Dados não é exibido para atributos de dados complexos. Para atributos complexos de dados, para exibir a hierarquia da estrutura em uma estrutura simplificada, selecione os dados complexos mostrados. Por exemplo, [...] ou {…}.

    Você pode aplicar transformações a atributos individuais ou fazer uma transformação em massa em um grupo de atributos.

    Para entidades com tipos de dados hierárquicos, consulte Tipos de Dados Hierárquicos para entender o que é suportado.

  10. Na guia Validação, verifique advertências ou erros que possam causar falha no fluxo de dados.
Usando padrões de arquivos

Ao configurar o OCI Object Storage como origem, você pode usar uma expressão regular para especificar um padrão de arquivo para selecionar uma ou mais entidades de dados.

Padrão de arquivo é uma regra para localizar arquivos que correspondam a um diretório e nome de arquivo e como tratar os arquivos correspondentes quando encontrados.

Sintaxe a ser usada

O serviço Data Integration suporta a sintaxe de padrão glob para especificar um padrão de arquivo.

  • Um asterisco, *, corresponde a qualquer número de caracteres (incluindo nenhum).
  • Dois asteriscos, **, funcionam da mesma forma que *, mas cruzam os limites do diretório para corresponder a caminhos completos.
  • Um ponto de interrogação, ?, corresponde exatamente a um caractere.
  • As chaves especificam um conjunto de subpadrões. Por exemplo:
    • {sun,moon,stars} corresponde a "sun", "moon" ou "stars".
    • {temp*,tmp*} corresponde a todas as strings que começam com "temp" ou "tmp".
  • Os colchetes transmitem um conjunto de caracteres únicos ou, quando o caractere de hífen (-) é usado, uma faixa de caracteres. Por exemplo:
    • [aeiou] corresponde a qualquer vogal minúscula.
    • [0-9] corresponde a qualquer dígito.
    • [A-Z] corresponde a qualquer letra maiúscula.
    • [a-z,A-Z] corresponde a qualquer letra maiúscula ou minúscula.

    Nos colchetes, *, ? e \ correspondem a si mesmos.

  • Todos os outros caracteres são correspondentes entre si.
  • Para corresponder a *, ? ou outros caracteres especiais, você pode escapá-los com o caractere de barra invertida, \. Por exemplo: \\ corresponde a uma única barra invertida e \? corresponde ao ponto de interrogação.
Exemplos
*.htmlCorresponde a todas as strings que terminam com .html
???Corresponde a todas as strings com exatamente três letras ou dígitos
*[0-9]*Corresponde a todas as strings contendo um valor numérico
*.{htm,html,pdf}Corresponde a qualquer string que termine com .htm, .html ou .pdf
a?*.javaCorresponde a qualquer string que comece com a, seguida por pelo menos uma letra ou dígito, e termine com .java
{foo*,*[0-9]*}Corresponde a qualquer string que comece com foo ou contenha um valor numérico
directory1/20200209/part-*[0-9]*jsonCorresponde a todos os arquivos na pasta cujo nome do arquivo começa com part- e tem qualquer número de 0-9 e termina com json
directory3/**.csvCorresponde a todos os arquivos com extensão csv que estão na pasta directory3 e suas subpastas
directory3/*.csvCorresponde a todos os arquivos com extensão csv que estão apenas na pasta principal directory3. Os arquivos em subpastas não são incluídos.
Testando e usando um padrão

Você pode testar a expressão para garantir que o padrão que deseja usar recupere os arquivos do serviço Object Storage para uma ou mais entidades de dados.

  1. No painel Selecionar entidade do dado, selecione Procurar por padrão.

  2. No painel Pesquisar entidades de dados por padrão, selecione Testar padrão no menu Mais ações.

  3. No painel Padrão de teste, no campo Padrão de pesquisa, digite uma expressão de padrão que você deseja testar antes de usar.

    Por exemplo, digite department1/2020/*.json para localizar todos os arquivos com a extensão .json que estão no diretório department1/2020. Você pode usar a sintaxe de parâmetro ${} no campo Padrão de pesquisa.

  4. Para testar o padrão de pesquisa, no bloco Testar nomes de arquivos, forneça um nome ou vários nomes de arquivo delimitados por uma nova linha. Por exemplo, para o padrão BANK_C*/*, os nomes dos arquivos podem ser:

    BANK_CITY/part-00002-0aaf87d57fbc-c000.csv	
    BANK_COUNTRY/part-00000-a66df3ab02fd-c000.csv
  5. Selecione Padrão de teste.

    Verifique se os nomes do arquivo de teste são retornados no bloco Nome do arquivo de resultado.

  6. Selecione Usar padrão para adicionar a expressão padrão ao painel Procurar entidades de dados por padrão.

    Você retornará ao painel Procurar entidades de dados por padrão. Os arquivos que correspondem à expressão de padrão são exibidos na tabela.

  7. Clique em Selecionar padrão.

    Você retornou ao painel Selecionar entidade de dados. A expressão de padrão é exibida ao lado de Entidade de dados.

    Quando você usa uma expressão de padrão, presume-se que todos os arquivos correspondentes ao padrão tenham a mesma estrutura. Os arquivos correspondentes são tratados como entidade única no fluxo de dados. Quaisquer novos arquivos futuros que corresponderem ao padrão também serão processados.

Usando a carga incremental gerenciada do Data Integration (BICC)

A carga incremental está carregando apenas dados novos ou atualizados de uma origem para um destino. No Data Integration, ao configurar o BICC Oracle Fusion Applications como dados de origem, você pode usar a estratégia de extração incremental Gerenciada para fazer carga incremental.

Quando você opta por usar a estratégia de extração incremental, apenas registros novos ou atualizados da origem são extraídos com base em uma data da última extração. O Data Integration fornece duas últimas opções de data de extração:

  • Personalizado: Você fornece uma data de extração mais recente para cada execução de tarefa.

  • Gerenciado: O Data Integration gerencia a data para você rastreando o timestamp de execução da tarefa e armazenando a última data de carregamento bem-sucedida como marca d'água em execuções consecutivas.

    Com a opção de data da última extração gerenciada do Data Integration, você não precisa especificar explicitamente uma data para uma execução de tarefa. No entanto, é possível substituir a data no momento da execução.

Execuções de tarefas iniciadas por uma programação de tarefa

O Data Integration rastreia uma execução de tarefa independentemente de uma execução de tarefa iniciada por uma programação de tarefa. Portanto, se você usar a opção de data da última extração Gerenciada e também configurar uma programação de tarefa, o Data Integration acompanhará automaticamente o timestamp da última execução de tarefa bem-sucedida de execuções programadas por tarefa separadamente do timestamp da última execução de tarefa bem-sucedida de execuções de tarefa que não são iniciadas por uma programação de tarefa. Isso significa que a última data gerenciada em uma programação de tarefa ou a última data gerenciada em uma tarefa não é modificada pela outra operação de execução.

Carga incremental para diferentes entidades de dados em um fluxo de dados

Suponha que você queira configurar a carga incremental em diferentes entidades de dados em um fluxo de dados. Você pode fazer isso usando parâmetros e criando uma programação de tarefa para cada entidade de dados. As etapas gerais são:

  1. No fluxo de dados, designe parâmetros para o esquema de origem (oferta de BICC) e a entidade de dados (VO de BICC).
  2. Crie e publique uma tarefa de integração para o fluxo de dados parametrizado.
  3. Crie uma programação de tarefa para a tarefa de integração. Na página Configurar parâmetros, especifique os valores do esquema e da entidade de dados para a programação da tarefa.
  4. Crie outra programação de tarefa para a mesma tarefa de integração. Na página Configurar parâmetros, defina os valores do esquema e da entidade de dados para esta programação de tarefa.
Carga incremental várias vezes em um dia

Para executar uma carga incremental mais de uma vez por dia, adicione um operador de filtro imediatamente após o operador de origem BICC no fluxo de dados. Em seguida, crie uma expressão de condição para filtrar dados que já foram processados. Por exemplo, se a coluna last_update_date do VO BICC for LastUpdateDateField, a expressão poderá ser a seguinte:

FILTER_1.MYSOURCE_1.LastUpdateDateField > ${SYS.LAST_LOAD_DATE}

Operador de Destino

Use o operador de destino para especificar as entidades de dados que servem de saída para armazenar dados transformados.

Adicionando e configurando um operador de destino

Você pode adicionar vários operadores de destino a um fluxo de dados. Cada destino pode ter apenas uma porta de entrada.

Importante

Se você estiver usando uma entidade de dados hierárquicos para um operador de destino, consulte Tipos de Dados Hierárquicos para entender o suporte. Talvez você não consiga executar algumas configurações nas guias Atributos, Mapear e Dados no painel Propriedades.
  1. No painel Operadores, arraste um operador de Alvo para a tela.
  2. Com o operador de destino em foco, faça o seguinte na guia Detalhes do painel Propriedades:

    Item Descrição

    Identificador

    Informe um nome para o operador de destino ou deixe o nome padrão como está.

    Criar nova entidade de dados

    (Opcional) Marque a caixa de seleção para criar uma nova entidade no destino, em vez de atualizar uma entidade existente no destino. Em uma etapa posterior, você será solicitado a digitar um nome para a entidade de dados que será criada no destino.

    Não marque a caixa de seleção se quiser usar uma entidade de dados existente como destino. Você será solicitado a selecionar a entidade de dados depois de selecionar o ativo de dados de destino, a conexão e o esquema.

    Ativo de dados

    Conexão

    Esquema ou Bucket

    Na ordem de recursos apresentada, clique em Selecionar ao lado do recurso para selecionar o ativo de dados, a conexão e o esquema ou o bucket.

    Observe o seguinte:

    • Nem todos os tipos de origem de dados estão disponíveis como ativos de dados de destino. Por exemplo, PostgreSQL e Hive não estão disponíveis como destinos.

    • Para a Estratégia de integração de Mesclagem, você não pode usar um ativo de dados do Object Storage como destino.

    • Se você estiver usando um ativo de dados do Object Storage, selecione o compartimento primeiro e, em seguida, selecione o bucket.

    • Para usar o Autonomous Data Warehouse ou o Autonomous Transaction Processing como destino, você precisa de um bucket do Object Storage como local de preparação. Se você selecionar um ativo de dados que não tenha um local de preparação padrão especificado nesse ativo de dados, o Data Integration exibirá uma notificação de advertência. Quando você vir a notificação, escolha uma das seguintes opções:
      • Selecione Atualizar ativo de dados para adicionar um local de preparação padrão a esse ativo de dados.
      • Clique em Selecionar ao lado de Local de preparação no painel Propriedades para selecionar o ativo de dados do Object Storage que tem o bucket que você deseja usar para preparação.
      A permissão de solicitação PAR_MANAGE é obrigatória. Para obter mais informações, consulte a etapa 5.

    Entidade de dados

    Se você marcou a caixa de seleção Criar nova entidade de dados, digite um nome para a entidade que será criada como destino. Para obter mais informações, consulte a etapa 3.

    Se você não marcou a caixa de seleção Criar nova entidade de dados, selecione uma entidade de dados existente como destino. Para obter mais informações, consulte a etapa 4.

    (Somente para ativos de dados do tipo Autonomous Data Warehouse ou Autonomous Transaction Processing)

    Local de teste

    O Data Integration usa o local de preparação para preparar os dados antes de carregá-los para o destino.

    Para obter mais informações, consulte a etapa 5.

    Estratégia de integração

    A forma como os dados são movidos para a entidade de dados de destino depende da estratégia de integração escolhida. As opções são:

    • Inserir: Insere novos registros ou anexa os registros quando os dados existem no destino.

      Se a caixa de seleção Criar nova entidade de dados estiver marcada, a opção de estratégia somente disponível para seleção será Inserir.

    • Substituir: Executa um truncamento no destino antes de inserir novos registros.

      Se você selecionar a estratégia Substituir, não poderá criar uma nova entidade de dados para a entidade de destino.

    • Mesclar: Insere novos registros e mescla os registros existentes em uma entidade de dados existente.

      Tome nota do seguinte ao usar a estratégia Mesclar:

      • A estratégia Mesclar está disponível apenas para destinos de banco de dados. Você não poderá usar um ativo de dados do Object Storage como destino se quiser usar essa estratégia de integração.

      • A chave Mesclar identifica o atributo ou os atributos para determinar quais linhas existentes ou novas linhas atualizar ou inserir. Você pode selecionar uma chave primária/exclusiva ou uma chave não primária como a chave Mesclar.

        Clique em Selecionar ou Editar. No painel Mesclar chave, execute uma das seguintes ações:

        • Selecione Atributos de chave Principal/Exclusivo e selecione uma chave.
        • Selecione Outros atributos para usar outros atributos (não principais). Informe um nome para a chave de mesclagem e selecione os atributos na lista.
      • Se uma entidade de dados de destino parametrizada estiver configurada para usar a estratégia Mesclar, você poderá alterar a seleção de chave Mesclar:
        • Em uma tarefa de integração no design time e no runtime
        • Em uma tarefa de integração em um pipeline no design time e no runtime (tarefa de pipeline)
        • Em uma programação de tarefa (tarefa de integração e tarefa de pipeline)

    (Somente para Armazenamento de Objetos)

    Criar saída como um arquivo único

    Esta etapa é opcional para destinos de Armazenamento de Objetos.

    Marque a caixa de seleção Criar saída como um único arquivo para gravar a saída em um único arquivo; caso contrário, a operação criará vários arquivos. O arquivo de saída único é substituído toda vez que a tarefa é executada.

    A criação de um único arquivo de saída pode afetar o desempenho do Data Integration. Não use a opção de arquivo de saída único para grandes conjuntos de dados.

    Você pode optar por gravar a saída em um único arquivo somente se uma das seguintes condições se aplicar:

    • Quando a Estratégia de integração for Inserir e a caixa de seleção Criar nova entidade de dados estiver marcada. Não adicione a barra (/) no final do novo nome da entidade. Para obter mais informações, consulte a etapa 3.
    • Quando a Estratégia de integração for Substituir e você usar uma entidade de dados existente (a caixa de seleção Criar nova entidade de dados não está marcada). Selecione uma entidade de dados existente que não tenha a barra (/) no final do nome da entidade. Para obter mais informações, consulte a etapa 4.
  3. Se você marcou a caixa de seleção Criar nova entidade de dados: Digite um nome para a entidade que será criada. Uma nova entidade de dados só será criada se o nome não existir.

    Consulte também Parâmetros em Nomes de Entidade de Dados se quiser usar um parâmetro para a parte do novo nome de entidade.

    Dependendo do tipo de ativo de dados, anote o seguinte ao inserir um nome para a entidade de dados:

    Tipo de destino Descrição

    Para Oracle Database, Autonomous Data Warehouse ou Autonomous Transaction Processing

    Informe o novo nome da entidade de dados.

    Ao criar uma entidade de dados do banco de dados como saída de destino, se o nome da entidade que você informar não existir, uma entidade de dados será criada e os dados serão inseridos na saída. Se o nome informado da entidade existir, o resultado da operação dependerá da forma do destino no fluxo de dados e da forma da entidade existente.

    Uma forma é baseada no número e no nome de atributos, tipos de dados, características de tipo, como tamanho e precisão, e se os dados estão presentes. Por exemplo, o tipo de dados varchar2(4000) não tem a mesma forma que varchar2(2000), mesmo que o nome do atributo no destino do fluxo de dados seja igual ao nome do atributo na entidade de dados existente.

    • Se a forma da entidade de destino no fluxo de dados for a mesma da entidade existente, a operação do banco de dados:
      • Inserirá dados, se nenhum estiver presente
      • Atualizará ou inserirá dados, se houver algum
    • Se a forma da entidade de destino no fluxo de dados não for igual à forma da entidade existente:
      • A operação adicionará o atributo à entidade existente quando o nome do atributo não existir.

        Por exemplo, o destino no fluxo de dados tem o atributo EMPLOYEE_ID NUMBER(10), mas EMPLOYEE_ID NUMBER não está presente na entidade existente.

      • Quando o nome do atributo está presente na entidade existente, mas a forma do tipo de dados não é a mesma:
        • Quando os dados do atributo estão presentes, a operação do banco de dados falha quando a forma dos dados é menor. Por exemplo, quando o destino no fluxo de dados tem EMPLOYEE_COMMENTS VARCHAR2(4000) e a entidade existente tem EMPLOYEE_COMMENTS VARCHAR2(2000), a operação falha. Quando o destino no fluxo de dados tiver EMPLOYEE_COMMENTS VARCHAR2(2000) e a entidade existente tiver EMPLOYEE_COMMENTS VARCHAR2(4000), a operação será bem-sucedida.

        • Quando os dados do atributo não estão presentes, a operação modifica o atributo e insere dados.

          Se o destino for um banco de dados autônomo, você poderá encontrar o erro de banco de dados ORA-22859: invalid modification of columns quando for feita uma tentativa de modificar um objeto de coluna, REF, VARRAY, tabela aninhada ou tipo de coluna LOB. Crie uma coluna do tipo preferencial e copie os dados da coluna para o novo tipo usando o construtor de tipo apropriado.

    Observe também que a conversão entre TEXT e CLOB não é suportada no Data Integration. Com o limite de 4000 bytes para uma coluna VARCHAR2 em um banco de dados autônomo, talvez você precise usar uma entidade de dados de destino existente que tenha um tipo de dados CLOB, em vez de marcar a caixa de seleção Criar nova entidade de dados em determinados casos de uso.

    Para Armazenamento de Objetos

    Digite o nome da nova entidade de dados, seguido de uma barra (/). Por exemplo, digite newdirectory/.

    No entanto, se você selecionar a caixa de seleção Criar saída como arquivo único porque deseja criar uma única saída de arquivo, digite o novo nome da entidade sem a barra (/) no final.

    Ao gravar a saída em um único arquivo, você pode incluir parâmetros no nome do arquivo usando a sintaxe ${PARAMETER_NAME}. Por exemplo, o nome do arquivo pode ser gravado como:

    /bucket1/file_${REGION}.csv
    /bucket1/file_${CURRENT_DATE}.csv

    Selecione também o Tipo de arquivo e o Tipo de compactação. Os tipos de compactação disponíveis para seleção dependem do tipo de arquivo escolhido. Se você não souber o método de compactação usado para compactar o arquivo, selecione Nenhum (Padrão).

    Para tipos de arquivo CSV e JSON, a Codificação padrão é UTF-8, que não pode ser alterada.

    Se você escolher o tipo de arquivo CSV, outras configurações que você pode configurar são:

    • Se a primeira linha do arquivo for uma linha de cabeçalho, selecione Sim para Possui cabeçalho.
    • Se os valores nas linhas de dados tiverem várias linhas, selecione Sim para Diversas Linhas.
    • Especifique o Caractere de escape que escapa outros caracteres encontrados nos valores de dados. Por exemplo: \
    • Selecione o caractere Delimitador que separa os campos de dados. Por exemplo: COLON (:), COMMA (,), PIPE (|), SEMICOLON (;) ou TAB (\t)
    • Se um delimitador de coluna estiver incluído no final de uma linha de dados no arquivo, selecione Sim para Delimitador final.
    • Especifique o Caractere de aspas que trata outros caracteres como literais. Por exemplo: "
  4. Se você não marcou a caixa de seleção Criar nova entidade de dados: Selecione uma entidade de dados existente.

    Para garantir que você esteja usando os esquemas mais recentes da entidade durante a sessão de trabalho atual no designer, selecione o ícone de atualização ao lado do nome da entidade. Somente os metadados da entidade são extraídos, não as alterações de dados reais.

    Dependendo do tipo de ativo de dados, anote o seguinte ao configurar para usar uma entidade de dados existente:

    Tipo de destino Descrição

    Para Armazenamento de Objetos

    Marque a caixa de seleção Criar saída como um único arquivo para usar um único arquivo de saída; caso contrário, a operação criará vários arquivos. O arquivo de saída único é substituído toda vez que a tarefa é executada.

    A criação de um único arquivo de saída pode afetar o desempenho do Data Integration. Não use a opção de arquivo de saída único para grandes conjuntos de dados.

    Se a caixa de seleção Criar saída como um único arquivo estiver marcada: ao selecionar a entidade de dados, selecione um nome de entidade que não tenha a barra (/) no final.

    Selecione o Tipo de arquivo. Se CSV for o tipo de arquivo, você poderá selecionar Visualizar dados brutos para exibir as 10 primeiras linhas do arquivo.

    Selecione o Tipo de compactação. Os tipos de compactação disponíveis para seleção dependem do tipo de arquivo escolhido. Se você não souber o método de compactação usado para compactar o arquivo, selecione Nenhum (Padrão).

    Para tipos de arquivo CSV e JSON, a Codificação padrão é UTF-8, que não pode ser alterada.

    Se o tipo de arquivo for CSV, outras configurações que você pode configurar são:

    • Se a primeira linha do arquivo for uma linha de cabeçalho, selecione Sim para Possui cabeçalho.
    • Se os valores nas linhas de dados tiverem várias linhas, selecione Sim para Diversas Linhas.
    • Especifique o Caractere de escape que escapa outros caracteres encontrados nos valores de dados. Por exemplo: \
    • Selecione o caractere Delimitador que separa os campos de dados. Por exemplo: COLON (:), COMMA (,), PIPE (|), SEMICOLON (;) ou TAB (\t)
    • Se um delimitador de coluna estiver incluído no final de uma linha de dados no arquivo, selecione Sim para Delimitador final.
    • Especifique o Caractere de aspas que trata outros caracteres como literais. Por exemplo: "

    Se o tipo de arquivo for JSON, selecione Usar esquema personalizado para colar ou fazer upload de um esquema de amostra personalizado que é usado para inferir a forma da entidade.

    • Se você selecionar Fazer Upload, elimine um arquivo de esquema personalizado na caixa fornecida ou clique em Selecionar um arquivo para selecionar o arquivo de esquema para upload.

    • Se você selecionar Colar no esquema, copie o conteúdo do arquivo de texto do esquema e cole-o na caixa fornecida.

  5. Para Autonomous Data Warehouse ou Autonomous Transaction Processing, selecione o local de preparação se um local padrão não estiver definido para o ativo ou edite o local para usar outro local de preparação.
    Observação

    Se o destino for o Autonomous Data Warehouse ou o Autonomous Transaction Processing, a opção de local de preparação será ativada para você selecionar um bucket do serviço Object Storage. O Data Integration usa o local de preparação para preparar os dados antes de carregá-los para o destino.

    Se o ativo de dados de destino estiver configurado com um local de preparação padrão, o Data Integration usará automaticamente esse bucket para preparação, a menos que você edite explicitamente o valor para especificar outro local de preparação.

    Para usar o Autonomous Data Warehouse ou o Autonomous Transaction Processing como destino, primeiro ative a permissão de solicitação PAR_MANAGE no bucket de preparação, por exemplo:

    allow any-user to manage buckets in compartment <compartment-name> where ALL {request.principal.type='disworkspace', request.permission='PAR_MANAGE', request.principal.id='<workspace-ocid>'}

    Saiba mais sobre Usando Solicitações Pré-Autenticadas.

    1. Para Local de preparação, clique em Selecionar ou Editar.
    2. (Para edição) No painel Selecionar local de preparação, não marque a caixa de seleção Usar configurações de local de preparação padrão, se quiser selecionar outro local de preparação.
    3. Selecione o menu Ativo de Dados e selecione um ativo do serviço Object Storage.
    4. Em seguida, selecione a Conexão, o Compartimento e o Bucket e clique em Selecionar.
  6. (Opcional) Na guia Opções avançadas, dependendo do tipo de ativo de dados para esse operador de destino, você pode informar valores ou usar valores padrão.

    Item Descrição

    Limite de rejeição

    Para Autonomous Data Warehouse ou Autonomous Transaction Processing

    Digite um valor.

    Você pode especificar o número máximo de linhas erradas que podem falhar ao serem carregadas para o destino antes que a tarefa de integração falhe. Por exemplo, se a origem de dados tiver 1.000 linhas e você definir o limite de rejeição como 200, a tarefa falhará imediatamente após a 200a linha errada ser rejeitada.

    Se você não especificar um valor, o padrão será zero, o que significa que a tarefa falhará quando a primeira linha errada for rejeitada.

    Se você encontrar uma falha de tarefa, verifique os logs dos nomes das tabelas em que as linhas foram rejeitadas. Em seguida, consulte as tabelas e as linhas afetadas no banco de dados autônomo.

    Ordem de carga

    Digite um valor.

    Somente números inteiros positivos são permitidos. O padrão é 0. A ordem de carga especifica a ordem dos nós de destino na qual os dados são carregados. O destino com o valor 0 é carregado primeiro; em seguida, o destino com o valor 1 e assim por diante. Se diversos nós tiverem o mesmo valor, os destinos serão carregados sem uma ordem específica.

  7. Na guia Atributos, você pode selecionar atributos individuais ou usar os ícones de filtro para filtrar a lista de atributos por um padrão de nome ou por um tipo de atributo. Em seguida, aplique regras de exclusão em massa aos atributos selecionados ou filtrados.

    Você pode aplicar apenas um filtro de padrão de nome, mas vários filtros de tipo por vez. Por exemplo, para filtrar pelo padrão de nome *_CODE e pelo tipo numérico ou varchar, você aplica um filtro de padrão de nome (*_CODE) e dois filtros de tipo (numérico, varchar).

    • Selecione o ícone de filtro na coluna Nome para filtrar atributos por um padrão de nome. No campo de filtro, digite uma expressão regular simples. Você pode usar os curingas ? e * no padrão regex.
    • Selecione o ícone de filtro na coluna Tipo para filtrar atributos por um tipo de dados. Use o menu para selecionar o tipo a ser usado como filtro.
    • Use o menu Ações para aplicar regras de exclusão em massa aos atributos selecionados ou filtrados. Selecione Excluir por seleção ou Excluir por filtro aplicado.
    • Selecione Verificar regras para abrir o painel Regras. Você pode exibir e gerenciar as regras que foram aplicadas à entidade de dados. Por padrão, a primeira regra no painel Regras inclui tudo.

    Um tipo complexo é mostrado como ARRAY (tipo de dados), COMPOSITE ou MAP (tipo de chave, tipo de valor). Consulte Tipos de Dados Hierárquicos para entender o que é suportado para tipos complexos.

  8. Na guia Dados, exiba uma amostra dos dados, com base em qualquer regra aplicada na guia Atributos. As transformações não podem ser aplicadas a um operador de destino porque os dados são somente para leitura.

    Para entidades com tipos de dados hierárquicos, consulte Tipos de Dados Hierárquicos para entender o que é suportado.

  9. Na guia Mapa, especifique como os atributos de entrada mapear para os atributos da entidade de dados de destino. Observe que os atributos de mapeamento não serão aplicáveis se você tiver marcado a caixa de seleção Criar nova entidade de dados.

    Para entidades de destino com tipos de dados hierárquicos, somente os campos de primeiro nível podem ser mapeados. Consulte Tipos de Dados Hierárquicos para entender o que é suportado.

  10. Na guia Validação, verifique advertências ou erros que possam causar falha no fluxo de dados.

    O Data Integration verifica e fornece avisos nas seguintes situações:

    • O truncamento de dados pode ocorrer quando os dados são carregados dos atributos de origem para os atributos de destino mapeados.
    • O tipo de dados de um atributo de origem não corresponde ao tipo de dados do atributo mapeado.
Exibindo dados

A guia Dados exibe os dados transformados com base nos operadores aplicados no fluxo de dados.

Importante

Se você estiver usando uma entidade de dados hierárquicos para um operador de destino, consulte Tipos de Dados Hierárquicos para entender o suporte.

Você pode filtrar dados na entidade de destino por um padrão de nome ou tipo de dados. Para filtrar dados por um padrão de nome, digite um padrão regex simples ou os curingas ? e * no campo Filtrar por Padrão. Para filtrar dados por um tipo, selecione o tipo de dados no menu ao lado do campo de padrão.

Não é possível aplicar transformações ao operador de destino porque os dados são somente para leitura.

Mapeando atributos

A guia Mapear só está disponível para um operador de destino.

Importante

Se você estiver usando uma entidade de dados hierárquicos para um operador de destino, consulte Tipos de Dados Hierárquicos para entender o suporte.

Quando você estiver criando uma nova entidade de dados de destino, a guia Mapear ficará indisponível. Os atributos de entrada são usados para criar a tabela ou a estrutura de arquivos com um mapeamento individual.

Ao usar uma entidade de dados de destino existente, mapeie os atributos de entrada para os atributos da entidade de dados de destino. As ações que você pode executar são:

Mapear por Posição

Mapeia atributos de entrada para atributos de entidade de destino de acordo com a posição deles nas listas.

No menu Ações, selecione Mapear automaticamente por posição. A regra Mapear automaticamente por posição é adicionada.

Mapear por Nome

Mapeia atributos de entrada para atributos de destino com o mesmo nome.

No menu Ações, selecione Mapear automaticamente por nome. A regra Mapear automaticamente por nome é adicionada.

Mapear por Padrão

Mapeia atributos de entrada para atributos de destino com base em regras de regex simples e definidas pelo usuário.

No menu Ações, selecione Mapear por padrão. Informe um padrão de origem e um padrão de destino. Em seguida, selecione o mapeamento Visualizar para testar os padrões de origem e destino.

Para definir um padrão, você pode usar símbolos de asterisco (*) e ponto de interrogação (?) Use um asterisco para indicar um curinga de qualquer número de caracteres em um padrão de string. Use um ponto de interrogação para indicar um caractere curinga único. Por exemplo, *INPUT? mapeia qualquer atributo correspondente que comece com n número de caracteres contendo a string INPUT seguido por um único caractere, como NEWINPUTS.

Por padrão, a correspondência de padrões não faz distinção entre maiúsculas e minúsculas. Por exemplo, o padrão de origem *Name corresponde ao nome de destino CUSTOMER_NAME e Customer_Name.

Para indicar diferentes grupos de captura, use $n. Por exemplo, digamos que você queira mapear LAST_NAME, FIRST_NAME e USERNAME de um operador de origem ou na direção ascendente para TGT_LAST_NAME, TGT_FIRST_NAME e TGT_USERNAME na entidade de dados de destino. Você digitaria *NAME no campo Padrão de origem e TGT_$1 no campo Padrão de destino. O asterisco (*) em *NAME significa que a string de caracteres antes de NAME deve ser idêntica à string de caracteres encontrada em $1 do padrão de destino. $1 se refere ao primeiro grupo de captura no padrão de origem, que nesse caso é o asterisco (*).

Nos casos em que você precisar de correspondência de padrão com distinção entre maiúsculas e minúsculas, adicione o prefixo (?c) ao padrão de origem. Por exemplo, digamos que você queira mapear o atributo de origem CustomerName, que usa letras maiúsculas e minúsculas de camelo em seu nome, para o atributo de destino com o nome Customer_Name. Você digitaria (?c)([A-Z][a-z]+)([A-Z][a-z]+) como o padrão de origem e $1_$2 como o padrão de destino. Quando o prefixo (?c) é adicionado ao início de um padrão de origem, a correspondência de padrões com distinção entre maiúsculas e minúsculas é ativada para o mapeamento. O Data Integration detecta que o "N" em CustomerName é o início de um novo padrão e, portanto, trata ([A-Z][a-z]+)([A-Z][a-z]+) como duas palavras diferentes (grupos de captura) ao fazer a correspondência.

Mapeamento de Mapa Direto

Arraste um atributo de entrada da lista de origem para um atributo na lista de destino para criar um mapeamento.

Se preferir, selecione Mapeamento manual no menu Ações. Em seguida, use a caixa de diálogo Mapear Atributo para criar um mapeamento selecionando um atributo de origem e um atributo de destino.

Remover um Mapeamento

Remove o mapeamento selecionado.

Selecione Exibir regras. No painel Regras, selecione uma ou mais regras e selecione Remover. Como alternativa, você pode selecionar Remover no menu Ações da regra (Menu Ações) para limpar essa regra.

Limpar Todos os Mapeamentos

Remove todos os mapeamentos.

No menu Ações, selecione Definir mapeamentos. Todas as regras de mapeamento automático e manual são removidas.

Operadores de Modelagem

Importante

Para tipos de dados complexos, consulte Tipos de Dados Hierárquicos para entender o que é suportado. Talvez você não consiga executar algumas configurações na guia Atributos e na guia Dados do painel Propriedades.

Operador de Filtro

Use o operador de filtro para selecionar um subconjunto de dados da porta de entrada para continuar em downstream até a porta de saída com base em uma condição de filtro.

Adicionando e configurando um operador de filtro
  1. No painel Operadores, arraste um operador Filtro para a tela.
  2. Com o operador de filtro focalizado, na guia Detalhes do painel Propriedades, digite um nome no campo Identifier ou deixe o nome como está.
  3. Ao lado de Condição do filtro, selecione Criar.
  4. No painel Criar Condição de Filtro, seção Condition Builder, você pode clicar duas vezes ou arrastar atributos, parâmetros e funções para adicionar ao editor e criar uma condição. Você também pode digitar uma expressão de condição manualmente no editor e validar a expressão.
    Observação

    No editor, um elemento adicionado, como uma função, pode ter espaços reservados. Para substituir um espaço reservado por outro elemento, destaque o espaço reservado e clique duas vezes em outro elemento da lista.
  5. Selecione Criar.
  6. (Opcional) Selecione Designar parâmetro para usar parâmetros para que a condição do filtro não seja vinculada ao código compilado quando você publicar o fluxo de dados. Consulte Designando um Parâmetro.
  7. Na guia Atributos, selecione para exibir atributos de entrada ou saída. Os atributos de entrada são vinculados ao operador no lado esquerdo. Os atributos de saída são vinculados ao operador no lado direito e vão para o operador seguinte.

    Você pode selecionar atributos individuais ou usar ícones de filtro para filtrar a lista de atributos. Em seguida, aplique as regras de exclusão em massa aos atributos selecionados ou filtrados.

    • Selecione o ícone de filtro na coluna Nome para filtrar atributos por um padrão de nome. No campo de filtro, digite uma expressão regular simples. Você pode usar os curingas ? e * no padrão regex.
    • Selecione o ícone de filtro na coluna Tipo para filtrar atributos por um tipo de dados. Use o menu para selecionar o tipo a ser usado como filtro.
      Observação

      Você só pode aplicar um filtro de padrão de nome, mas vários filtros de tipo por vez. Por exemplo, para filtrar pelo padrão de nome *_CODE e pelo tipo numérico ou varchar, você aplica um filtro de padrão de nome (*_CODE) e dois filtros de tipo (numérico, varchar).
    • Use o menu Ações para aplicar regras de exclusão em massa aos atributos selecionados ou filtrados. Selecione Excluir por seleção ou Excluir por filtro aplicado.
    • Selecione Verificar regras para abrir o painel Regras. Você pode exibir e gerenciar as regras que foram aplicadas à entidade de dados. Por padrão, a primeira regra no painel Regras inclui tudo.

    Um tipo complexo é mostrado como ARRAY (data type), COMPOSITE ou MAP (key type, value type). Consulte Tipos de Dados Hierárquicos para entender o que é suportado para tipos complexos.

  8. Na guia Dados, exiba uma amostra dos dados, com base na configuração do operador e em todas as regras aplicadas na guia Atributos.

    O Perfil de Dados não é exibido para atributos de dados complexos. Para atributos de dados complexos, para exibir a hierarquia da estrutura de dados em uma estrutura simplificada, selecione os dados complexos mostrados. Por exemplo, [...] ou {…}.

    Você pode aplicar transformações a atributos individuais ou fazer uma transformação em massa em um grupo de atributos.

    Para entidades com tipos de dados hierárquicos, consulte Tipos de Dados Hierárquicos para entender o que é suportado.

  9. Na guia Validação, verifique advertências ou erros que possam causar falha no fluxo de dados.
Criando uma condição de filtro

Use o Condition Builder para selecionar visualmente elementos para criar uma condição de filtro. Também é possível informar uma condição de filtro manualmente no editor.

A criação de uma condição de filtro permite selecionar um subconjunto de dados de um operador de upstream com base na condição.

Os elementos que podem ser usados em uma condição de filtro incluem atributos de entrada, parâmetros e funções. Você pode clicar duas vezes ou arrastar um elemento da lista para adicionar ao editor para criar uma condição. É possível validar a condição antes de criá-la.

Entrada exibe os atributos do operador de upstream que estão vindo para esse operador de filtro.

Por exemplo, para filtrar dados por um nome de cidade, você pode criar a expressão de condição como:

FILTER_1.ADDRESSES.CITY='Redwood Shores'

Os Parâmetros são os parâmetros da expressão adicionados ao fluxo de dados usando o Construtor de Condições (operadores filtro, junção, pesquisa e divisão) ou Construtor de Expressões (operadores agregados e de expressão). Um parâmetro de expressão tem um nome, um tipo e um valor padrão. Consulte Adicionando um Parâmetro de Expressão.

Suponha que você queira usar um parâmetro para o nome da cidade na condição de filtro. Você pode criar um parâmetro VARCHAR com o nome P_VARCHAR_CITY e definir o valor padrão como Redwood Shores. Em seguida, você pode criar a expressão de filtro como:

FILTER_1.ADDRESSES.CITY=$P_VARCHAR_CITY

As Funções são aquelas disponíveis no serviço Data Integration que você pode usar em uma condição. Funções são operações executadas em argumentos transmitidos à função. As funções calculam, manipulam ou extraem valores de dados de argumentos.

Por exemplo, para filtrar dados por um nome de cidade ou por população, você pode usar a função OR para criar a expressão de condição de filtro como:

FILTER_1.COUNTRIES.CITY=$P_VARCHAR_CITY OR FILTER_1.COUNTRIES.POPULATION>100000000
FILTER_1.COUNTRIES.CITY=$P_VARCHAR_CITY OR FILTER_1.COUNTRIES.POPULATION>$P_NUMERIC

Veja a seguir uma lista de funções que estão disponíveis para você adicionar quando construir as condições:

Funções de Hash
FunçãoDescriçãoExemplo
MD5(all data types)Calcula uma soma de verificação MD5 do tipo de dados e retorna um valor de string. MD5(column_name)
SHA1(all data types)Calcula um valor de hash SHA-1 do tipo de dados e retorna um valor de string. SHA1(column_name)
SHA2(all data types, bitLength)Calcula um valor de hash SHA-2 do tipo de dados e retorna um valor de string. bitLengthé um número inteiro. SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512).
ORA_HASH(expr, [max_bucket], [seed_value])

Calcula um valor de hash para expr e retorna um valor NUMBER.

expr pode ser uma expressão, uma coluna, um literal.

max_bucket é o valor máximo de bucket retornado, entre 0 e 4294967295 (padrão).

seed_value é um valor entre 0 (padrão) e 4294967295.

A Oracle aplica a função hash à combinação de expr e seed_value para produzir muitos resultados diferentes para o mesmo conjunto de dados.

ORA_HASH('1')

ORA_HASH('b', 2)

ORA_HASH(100, 10, 10)

ORA_HASH(EXPRESSION_1.CUSTOMERS.SSN, 2)

Funções Aritméticas
FunçãoDescriçãoExemplo
ABS(numeric)Retorna a potência absoluta do valor numeric.ABS(-1)
CEIL(numeric)Retorna o menor inteiro não maior que o valor numericCEIL(-1,2)
FLOOR(numeric)Retorna o maior inteiro não maior que o valor numeric.FLOOR(-1,2)
MOD(numeric1, numeric2)Retorna o resto depois que numeric1 é dividido por numeric2.MOD(8,2)
POWER(numeric1, numeric2)Eleva numeric1 à potência de numeric2.POWER(2,3)
ROUND(numeric1, numeric2)Retorna numeric1 arredondado para numeric2 casas decimais.ROUND(2.5,0)
TRUNC(numeric1, numeric2)Retorna numeric1 truncado em numeric2 casas decimais.TRUNC(2.5,0)
TO_NUMBER(expr[, format, locale])Converte um expr em um número, com base em format e em locale opcional fornecidos. A configuração regional padrão é en-US. Tags de idioma suportadas.

Padrões de formato suportados:

  • 0: Um dígito
  • #: Um dígito, zero mostra como ausente
  • .: Espaço reservado para separador decimal
  • ,: Espaço reservado para separador de agrupamento
  • E: Separa mantissa e expoente para formatos exponenciais
  • -: Prefixo negativo padrão
  • ¤: Sinal de moeda; substituído pelo símbolo de moeda; se duplo, substituído pelo símbolo de moeda internacional; se presente em um padrão, o separador decimal monetário é usado no lugar do separador decimal

TO_NUMBER('5467.12') returns retorna 5467.12

TO_NUMBER('-USD45,677.7', '¤¤##,###.#', 'en-US') retorna -45677.7

Funções de Date e Hora
Função Descrição Exemplo
CURRENT_DATE Retorna a data atual. CURRENT_DATEretorna a data de hoje, como 2023-05-26
CURRENT_TIMESTAMP Retorna a data atual e a hora do fuso horário da sessão. CURRENT_TIMESTAMP retorna a data e a hora atuais de hoje, como 2023-05-26 12:34:56
DATE_ADD(date, number_of_days) Retorna a data que é o number especificado de dias após o date especificado. DATE_ADD('2017-07-30', 1) retorna 2017-07-31
DATE_FORMAT(expr, format[, locale])

Formata uma expr de Data, com base no format e no locale opcional fornecidos. A configuração regional padrão é en-US. Tags de idioma suportadas.

Padrões de formato de data suportados:

  • yy: ano com dois dígitos
  • yyyy: ano com quatro dígitos
  • M: Mês numérico, como 1 para janeiro
  • MM: Mês numérico, como 01 para janeiro
  • MMM: Mês resumido, como Jan
  • MMMMMM: Mês completo, como Janeiro
  • d: Dia numérico do mês, como 1 para 1 de junho
  • dd: Dia numérico do mês, como 01 para 1 de junho
  • DDD: Dia numérico do ano de 001 a 366, como 002 para 2 de janeiro
  • F: Dia numérico da semana em um mês, como 3 para a 3a segunda-feira de junho.
  • EEE ou E: Dia nomeado abreviado da semana, como Dom para domingo
  • EEEE: Dia da semana nomeado, como Domingo
  • HHH: formato de 24 horas de 00 a 23
  • H: formato de 0 a 23 horas
  • hh: formato de 12 horas de 01 a 12
  • h: formato de 12 horas de 1 a 12
  • mm: minutos de 00 a 59
  • ss: segundos de 00 a 59
  • SSS: milissegundos de 000 a 999
  • a: AM ou PM
  • z: fuso horário, como PDT

DATE_FORMAT(Date '2020-10-11', 'yyyy-MM-dd') retorna '2020-10-11'. O primeiro argumento é um objeto Date representando 11 de outubro de 2020.

DATE_FORMAT(Date '2018-junio-17', 'yyyy/MMMM/dd', 'es-ES') retorna '2018/junio/17'

DAYOFMONTH(date) Retorna o dia da data no mês. DAYOFMONTH('2020-12-25') retorna 25
DAYOFWEEK(date) Retorna o dia da data na semana. DAYOFWEEK('2020-12-25') retorna 6 para sexta-feira. Nos Estados Unidos, o domingo é considerado 1, a segunda-feira é 2 e assim por diante.
DAYOFYEAR(date) Retorna o dia da data no ano. DAYOFYEAR('2020-12-25') retorna 360
WEEKOFYEAR(date) Retorna a semana da data no ano.

WEEKOFYEAR('2022-07-28') retorna 30

WEEKOFYEAR('2022-07-28 13:24:30') retorna 30

HOUR(datetime) Retorna o valor da hora da data/hora. HOUR('2020-12-25 15:10:30') retorna 15
LAST_DAY(date) Retorna o último dia do mês da data. LAST_DAY('2020-12-25') retorna 31
MINUTE(datetime) Retorna o valor do minuto da data e hora. HOUR('2020-12-25 15:10:30') retorna 10
MONTH(date) Retorna o valor do mês da data. MONTH('2020-06-25') retorna 6
QUARTER(date) Retorna o trimestre do ano em que a data está. QUARTER('2020-12-25') retorna 4
SECOND(datetime) Retorna o valor de segundo da data e hora. SECOND('2020-12-25 15:10:30') retorna 30
TO_DATE(string, format_string[, localeStr]) Faz parsing da expressão de string com a expressão format_string para uma data. A configuração regional é opcional. O padrão é en-US. Tags de idioma suportadas.

Nas expressões do pipeline, format_string deve usar os códigos de formato strftime. Caso contrário, as strings de formato com distinção entre maiúscula/minúscula suportadas serão:

  • yy: ano com dois dígitos
  • yyyy: ano com quatro dígitos
  • M: Mês numérico, como 1 para janeiro
  • MM: Mês numérico, como 01 para janeiro
  • MMM: Mês resumido, como Jan
  • MMMMMM: Mês completo, como Janeiro
  • d: Dia numérico do mês, como 1 para 1 de junho
  • dd: Dia numérico do mês, como 01 para 1 de junho
  • DDD: Dia numérico do ano de 001 a 366, como 002 para 2 de janeiro
  • F: Dia numérico da semana em um mês, como 3 para a 3a segunda-feira de junho.
  • EEE ou E: Dia nomeado abreviado da semana, como Dom para domingo
  • EEEE: Dia da semana nomeado, como Domingo
  • HHH: formato de 24 horas de 00 a 23
  • H: formato de 0 a 23 horas
  • hh: formato de 12 horas de 01 a 12
  • h: formato de 12 horas de 1 a 12
  • mm: minutos de 00 a 59
  • ss: segundos de 00 a 59
  • SSS: milissegundos de 000 a 999
  • a: AM ou PM
  • z: fuso horário, como PDT

TO_DATE('31 December 2016', 'dd MMMM yyyy') retorna um valor de Data igual a 2016-12-31

TO_DATE('2018/junio/17', 'yyyy/MMMM/dd', 'es-ES') retorna um valor de Data igual a 2018-06-17

TO_TIMESTAMP(expr, format_string[, localeStr]) Converte um expr de VARCHAR em um valor de TIMESTAMP, com base no valor format_string e no valor localeStr opcional fornecidos.

Nas expressões do pipeline, format_string deve usar os códigos de formato strftime. Caso contrário, os padrões de formato suportados serão:

  • yy: ano com dois dígitos
  • yyyy: ano com quatro dígitos
  • M: Mês numérico, como 1 para janeiro
  • MM: Mês numérico, como 01 para janeiro
  • MMM: Mês resumido, como Jan
  • MMMMMM: Mês completo, como Janeiro
  • d: Dia numérico do mês, como 1 para 1 de junho
  • dd: Dia numérico do mês, como 01 para 1 de junho
  • DDD: Dia numérico do ano de 001 a 366, como 002 para 2 de janeiro
  • F: Dia numérico da semana em um mês, como 3 para a 3a segunda-feira de junho.
  • EEE ou E: Dia nomeado abreviado da semana, como Dom para domingo
  • EEEE: Dia da semana nomeado, como Domingo
  • HHH: formato de 24 horas de 00 a 23
  • H: formato de 0 a 23 horas
  • hh: formato de 12 horas de 01 a 12
  • h: formato de 12 horas de 1 a 12
  • mm: minutos de 00 a 59
  • ss: segundos de 00 a 59
  • SSS: milissegundos de 000 a 999
  • a: AM ou PM
  • z: fuso horário, como PDT
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') retorna um objeto TIMESTAMP que representa 11am 10:10 Oct 11th, 2020
WEEK(date)

Retorna o valor da semana da data.

WEEK('2020-06-25') retorna 4
YEAR(date) Retorna o valor do ano da data. YEAR('2020-06-25') retorna 2020
ADD_MONTHS(date_expr, number_months) Retorna a data após a adição do número especificado de meses à data, timestamp ou string especificada com um formato yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS.

ADD_MONTHS('2017-07-30', 1) retorna 2017-08-30

ADD_MONTHS('2017-07-30 09:07:21', 1) retorna 2017-08-30

MONTHS_BETWEEN(start_date_expr, end_date_expr)

Retorna o número de meses entre start_date_expr e end_date_expr. start_date_expr e end_date_expr podem ser uma data, um timestamp ou uma string com um formato yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Um número inteiro será retornado se as duas datas forem o mesmo dia do mês ou se ambas forem o último dia em seus respectivos meses. Caso contrário, a diferença será calculada com base em 31 dias por mês.

MONTHS_BETWEEN('2022-01-01', '2022-01-31') retorna 1

MONTHS_BETWEEN('2022-07-28', '2020-07-25') retorna 24

MONTHS_BETWEEN('2022-07-28 13:24:30', '2020-07-25 13:24:30') retorna 24

FROM_UTC_TIMESTAMP(time_stamp, time_zone)

Interpreta uma data, um timestamp ou uma string como horário UTC e converte esse horário em um timestamp no fuso horário especificado.

Para string, use um formato como: yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

O formato de fuso horário é um ID de zona baseado em região (por exemplo, 'área/cidade', como 'Asia/Seoul', ou um deslocamento de fuso horário (por exemplo, UTC+02).

FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') retorna 2017-07-14 03:40:00.0
TO_UTC_TIMESTAMP(time_stamp, time_zone)

Converte uma data, um timestamp ou uma string no fuso horário especificado em um timestamp UTC.

Para string, use um formato como: yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

O formato de fuso horário é um ID de zona baseado em região (por exemplo, 'área/cidade', como 'Asia/Seoul'), ou um deslocamento de fuso horário (por exemplo, UTC+02).

TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') retorna 2017-07-14 01:40:00.0
FROM_UNIXTIME(unix_time[, fmt])

Converte a época ou o horário especificado do Unix em uma string que representa o timestamp desse momento no fuso horário do sistema atual e no formato especificado.

Observação: O horário do Unix é o número de segundos decorridos desde 1o de janeiro de 1970 00:00:00 UTC.

Se fmt for omitido, o formato padrão será yyyy-MM-dd HH:mm:ss

FROM_UNIXTIME(1255033470) retorna '2009-10-08 13:24:30'

FROM_UNIXTIME(1637258854) retorna '2021-11-18 10:07:34'

O fuso horário padrão é PST nos exemplos

UNIX_TIMESTAMP([time_expr[, fmt]])

Converte o horário atual ou especificado em um timestamp do Unix em segundos.

time_expr é uma data, um timestamp ou uma string com um formato yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Se time_expr não for informado, o horário atual será convertido.

Se time_expr for uma string e fmt for omitido, o padrão será yyyy-MM-dd HH:mm:ss

UNIX_TIMESTAMP('1970-01-01 00:00:00', 'yyyy-MM-dd HH:mm:ss') retorna 28800

O fuso horário padrão é PST neste exemplo

INTERVAL 'year' YEAR[(year_precision)]

Retorna um período em anos.

year_precision é o número de dígitos no campo year; ele varia de 0 a 9. Se year_precision for omitido, o padrão será 2 (deve ser menor que 100 anos).

INTERVAL '1' YEAR retorna um intervalo de 1 ano

INTERVAL '200' YEAR(3) retorna um intervalo de 200 anos

INTERVAL 'year month' YEAR[(year_precision)] TO MONTH

Retorna um período em anos e meses. Use para armazenar um período usando os campos year e month.

year_precision é o número de dígitos no campo year; ele varia de 0 a 9. Se year_precision for omitido, o padrão será 2 (deve ser menor que 100 anos).

INTERVAL '100-5' YEAR(3) TO MONTH retorna um intervalo de 100 anos e 5 meses. Especifique a precisão do ano principal de 3.
INTERVAL 'month' MONTH[(month_precision)]

Retorna um período em meses.

month_precision é o número de dígitos no campo mês; ele varia de 0 a 9. Se month_precision for omitido, o padrão será 2 (deve ser menor que 100 anos).

INTERVAL '200' MONTH(3) retorna um intervalo de 200 meses. Especifique a precisão do mês de 3.
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)]

Retorna um período em termos de dias, horas, minutos e segundos.

day_precision é o número de dígitos no campo day; ele varia de 0 a 9. O padrão é 2.

fractional_seconds_precision é o número de dígitos na parte fracionária do valor do segundo no campo time; ele varia de 0 a 9.

INTERVAL '11 10:09:08.555' DAY TO SECOND(3) retorna um intervalo de 11 dias, 10 horas, 09 minutos, 08 segundos e 555 milésimos de segundo
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)]

Retorna um período em termos de dias, horas e minutos.

day_precision é o número de dígitos no campo day; ele varia de 0 a 9. O padrão é 2.

minute_precision é o número de dígitos no campo minute; ele varia de 0 a 2. O padrão é 2.

INTERVAL '11 10:09' DAY TO MINUTE retorna um intervalo de 11 dias, 10 horas e 09 minutos
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)]

Retorna um período em termos de dias e horas.

day_precision é o número de dígitos no campo day; ele varia de 0 a 9. O padrão é 2.

hour_precision é o número de dígitos no campo hora; ele varia de 0 a 2. O padrão é 2.

INTERVAL '100 10' DAY(3) TO HOUR retorna um intervalo de 100 dias e 10 horas
INTERVAL 'day' DAY[(day_precision)]

Retorna um período em termos de dias.

day_precision é o número de dígitos no campo day; ele varia de 0 a 9. O padrão é 2.

INTERVAL '999' DAY(3) retorna um intervalo de 999 dias
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)]

Retorna um período em termos de horas, minutos e segundos.

hour_precision é o número de dígitos no campo hora; ele varia de 0 a 2. O padrão é 2.

fractional_seconds_precision é o número de dígitos na parte fracionária do valor do segundo no campo time; ele varia de 0 a 9.

INTERVAL '09:08:07.6666666' HOUR TO SECOND(7) retorna um intervalo de 9 horas, 08 minutos e 7.6666666 segundos
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)]

Retorna um período em termos de horas e minutos.

hour_precision é o número de dígitos no campo hora; ele varia de 0 a 2. O padrão é 2.

minute_precision é o número de dígitos no campo minute; ele varia de 0 a 2. O padrão é 2.

INTERVAL '09:30' HOUR TO MINUTE retorna um intervalo de 9 horas e 30 minutos
INTERVAL 'hour' HOUR[(hour_precision)]

Retorna um período em termos de horas.

hour_precision é o número de dígitos no campo hora; ele varia de 0 a 2. O padrão é 2.

INTERVAL '40' HOUR retorna um intervalo de 40 horas
INTERVAL 'minute' MINUTE[(minute_precision)]

Retorna um período em termos de minutos.

minute_precision é o número de dígitos no campo minute; ele varia de 0 a 2. O padrão é 2.

INTERVAL '15' MINUTE retorna um intervalo de 15 minutos
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)]

Retorna um período em termos de minutos e segundos.

minute_precision é o número de dígitos no campo minute; ele varia de 0 a 2. O padrão é 2.

fractional_seconds_precision é o número de dígitos na parte fracionária do valor do segundo no campo time; ele varia de 0 a 9.

INTERVAL '15:30' MINUTE TO SECOND retorna um intervalo de 15 minutos e 30 segundos
INTERVAL 'second' SECOND[(fractional_seconds_precision)]

Retorna um período em termos de segundos.

fractional_seconds_precision é o número de dígitos na parte fracional do campo segundo; ele varia de 0 a 9. O padrão é 3.

INTERVAL '15.678' SECOND retorna um intervalo de 15,678 segundos
Funções Analíticas
Função Descrição Exemplo
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) Retorna o valor avaliado na linha que é a primeira do quadro da janela. FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) retorna o primeiro valor BANK_ID em uma janela na qual as linhas são calculadas como linha atual e 1 linha após essa linha, particionadas por BANK_ID e em ordem crescente de BANK_NAME.
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) Retorna o valor avaliado na linha em um determinado deslocamento antes da linha atual dentro da partição. Se não houver essa linha, o valor padrão será retornado. O deslocamento e o padrão são avaliados em relação à linha atual. Se omitido, o desvio é padronizado como 1 e o padrão é NULL. LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) retorna o valor BANK_ID da segunda linha antes da linha atual, particionada por BANK_ID e em ordem decrescente de BANK_NAME. Se não houver esse valor, hello será retornado.
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) Retorna o valor avaliado na linha que é a última do quadro da janela. LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) retorna o último valor BANK_ID em uma janela na qual as linhas são calculadas como a linha atual e 1 linha após essa linha, particionada por BANK_ID e em ordem crescente de BANK_NAME.
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) Retorna o valor avaliado na linha em um determinado deslocamento após a linha atual dentro da partição. Se não houver essa linha, o valor padrão será retornado. O deslocamento e o padrão são avaliados em relação à linha atual. Se omitido, o desvio é padronizado como 1 e o padrão é NULL. LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retorna o valor BANK_ID da segunda linha após a linha atual, particionada por BANK_ID e em ordem crescente de BANK_NAME. Se não houver esse valor, hello será retornado.
RANK() OVER([ partition_clause ] order_by_clause) Retorna a classificação da linha atual com lacunas, contando a partir de 1. RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retorna a classificação de cada linha dentro do grupo de partições de BANK_ID, em ordem crescente de BANK_NAME.
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) Retorna o número exclusivo da linha atual dentro de sua partição, contando a partir de 1. ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retorna o número de linha exclusivo de cada linha dentro do grupo de partições de BANK_ID, em ordem crescente de BANK_NAME.
Funções da String
FunçõesDescriçãoExemplo
CAST(value AS type)Retorna o valor especificado no tipo especificado.CAST("10" AS INT) retorna 10
CONCAT(string, string)Retorna os valores combinados de strings ou colunas.CONCAT('Oracle','SQL') retorna OracleSQL
CONCAT_WS(separator, expression1, expression2, expression3,...) Retorna os valores combinados de strings ou colunas usando o separador especificado entre as strings ou colunas.

Um separador é obrigatório e deve ser uma string.

Pelo menos uma expressão deve ser fornecida após o separador. Por exemplo: CONCAT_WS(',' col1)

CONCAT_WS('-', 'Hello', 'Oracle') retorna Hello-Oracle

CONCAT_WS(' ', address, city, postal_code) retorna 123 MyCity 987654

Se um filho da função for um array, o array será nivelado:

CONCAT_WS(',', 1,2,3, to_array(4,5,6), to_array(7,8), 9) retorna 1,2,3,4,5,6,7,8,9

INITCAP(string)Retorna a string com a primeira letra de cada palavra em maiúscula, enquanto todas as outras letras ficam em minúsculas e cada palavra é delimitada por um espaço em branco.INITCAP('oRACLE sql') retorna Oracle Sql
INSTR(string, substring[start_position])Retorna o índice (baseado em 1) da primeira ocorrência de substring em string.INSTR('OracleSQL', 'SQL') retorna 7
LOWER(string)Retorna a string com todas as letras alteradas para minúsculas.LOWER('ORACLE') retorna oracle
LENGTH(string)Retorna o tamanho do caractere da string ou o número de bytes de dados binários. O tamanho da string inclui espaços à direita.LENGTH('Oracle') retorna 6
LTRIM(string)Retorna a string com espaços à esquerda removidos.LTRIM(' Oracle')
NVL(expr1, epxr2)Retorna o argumento que não é nulo.NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID())
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx])Pesquisa e extrai a string que corresponde a um padrão de expressão regular da string de entrada. Se o índice do grupo de captura opcional for informado, a função extrairá o grupo específico.

REGEXP_SUBSTR('https://www.oracle.com/products', 'https://([[:alnum:]]+\.?){3,4}/?') retorna https://www.oracle.com

REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) retorna 22
REPLACE(string, search, replacement)Substitui todas as ocorrências de search por replacement.

Se search não for encontrado na string, ela será retornada inalterada.

Se replacement não for especificado ou for uma string vazia, nada substituirá search que é removido de string.

REPLACE('ABCabc', 'abc', 'DEF') retorna ABCDEF
RTRIM(string)Retorna a string com espaços à esquerda removidos da direita.RTRIM('Oracle ')
SUBSTRING(string, position[, substring_length])Retorna a substring que começa na posição. SUBSTRING('Oracle SQL' FROM 2 FOR 3) returns rac
Para números, TO_CHAR(expr) e datas TO_CHAR(expr, format[, locale])Converte números e datas em strings. Para números, nenhum formato é necessário. Para datas, use o mesmo formato que DATE_FORMAT descrito em Funções de Data e Hora. A configuração regional padrão é en-US. Consulte tags de idioma suportadas.

Nas expressões do pipeline, format_string deve usar os códigos de formato strftime. Caso contrário, os padrões de formato de data suportados são:

  • yy: ano com dois dígitos
  • yyyy: ano com quatro dígitos
  • M: Mês numérico, como 1 para janeiro
  • MM: Mês numérico, como 01 para janeiro
  • MMM: Mês resumido, como Jan
  • MMMMMM: Mês completo, como Janeiro
  • d: Dia numérico do mês, como 1 para 1 de junho
  • dd: Dia numérico do mês, como 01 para 1 de junho
  • DDD: Dia numérico do ano de 001 a 366, como 002 para 2 de janeiro
  • F: Dia numérico da semana em um mês, como 3 para a 3a segunda-feira de junho.
  • EEE ou E: Dia nomeado abreviado da semana, como Dom para domingo
  • EEEE: Dia da semana nomeado, como Domingo
  • HHH: formato de 24 horas de 00 a 23
  • H: formato de 0 a 23 horas
  • hh: formato de 12 horas de 01 a 12
  • h: formato de 12 horas de 1 a 12
  • mm: minutos de 00 a 59
  • ss: segundos de 00 a 59
  • SSS: milissegundos de 000 a 999
  • a: AM ou PM
  • z: fuso horário, como PDT

Exemplo de número: TO_CHAR(123) retorna 123

Exemplo de data: TO_CHAR(Date '2020-10-30', 'yyyy.MM.dd', 'en-US') retorna a string 2020.10.30. O primeiro argumento é um objeto Date representando 30 de outubro de 2020.

UPPER(string)Retorna uma string com todas as letras alteradas para maiúsculas.UPPER('oracle') retorna ORACLE
LPAD(str, len[, pad])Retorna uma string preenchida à esquerda com caracteres especificados para um determinado tamanho. Se o caractere pad for omitido, o padrão será um espaço.LPAD('ABC', 5, '*') retorna '**ABC'
RPAD(str, len[, pad])Retorna uma string preenchida à direita com caracteres especificados para um determinado tamanho. Se o caractere pad for omitido, o padrão será um espaço.RPAD('XYZ', 6, '+' ) returns 'XYZ+++'
Funções do Operador (Comparação)
FunçãoDescriçãoExemplo
CASE WHEN condition1 THEN result1 ELSE result2 ENDRetorna o valor cuja condição é atendida.CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END retorna ABC se 1> 0; caso contrário, retorna XYZ
ANDO operador lógico AND. Retorna verdadeiro se os dois operandos forem verdadeiros; caso contrário, retorna falso.(x = 10 AND y = 20) retorna "true" se x for igual a 10 e y for igual a 20. Se um dos dois não for verdadeiro, retornará "false"
ORO operador lógico OR. Retorna verdadeiro se um operando for verdadeiro ou ambos forem verdadeiros; caso contrário, retorna falso.(x = 10 OR y = 20) retorna "false" se x não for igual a 10 e também y não for igual a 20. Se um for verdadeiro, retornará "true"
NOTO operador lógico NOT.
LIKEExecuta correspondência de padrão de string, se string1 corresponder ao padrão em string2.
=Verifica a igualdade. Retorna verdadeiro se expr1 for igual a expr2; caso contrário, retorna falso.x = 10 retorna "true" quando o valor de x é 10, caso contrário, retorna "false"
!=Verifica a desigualdade. Retorna verdadeiro se expr1 não for igual a expr2; caso contrário, retorna falso.x != 10 retorna "false" se o valor de x for 10, caso contrário, retorna "true"
>Verifica uma expressão maior que. Retorna verdadeiro se expr1 for maior que expr2.x > 10 retorna "true" se o valor de x for maior que 10, caso contrário, retorna "false"
>=Testa uma expressão maior que ou igual a. Retorna verdadeiro se expr1 for maior ou igual a expr2.x > =10 retorna "true" se o valor de x for maior ou igual a 10, caso contrário, retorna "false"
<Testa uma expressão menor que. Retorna verdadeiro se expr1 for menor que expr2.x < 10 retorna "true" se o valor de x for menor que 10, caso contrário, retornará "false"
<=Testa uma expressão menor que ou igual a. Retorna verdadeiro se expr1 for menor ou igual a expr2.x <= 10 retorna "true" se o valor de x for menor que 10, caso contrário, retorna "false"
||Concatena duas strings.'XYZ' || 'hello' retorna 'XYZhello'
BETWEENAvalia um intervalo.FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007
INTesta se uma expressão corresponde a uma lista de valores.FILTER_2.ORDERS.ORDER_ID IN (1003, 1007)
Funções de ID Exclusivo
FunçãoDescriçãoExemplo
NUMERIC_ID()Gera um identificador exclusivo universal que é um número de 64 bits para cada linha.NUMERIC_ID() retorna, por exemplo, 3458761969522180096 e 3458762008176885761
ROWID()Gera números monotonicamente crescentes de 64 bits.ROWID() retorna, por exemplo, 0, 1, 2 e assim por diante
UUID()Gera um identificador exclusivo universal que é uma String de 128 bit para cada linha.UUID() retorna, por exemplo, 20d45c2f-0d56-4356-8910-162f4f40fb6d
MONOTONICALLY_INCREASING_ID() Gera inteiros exclusivos e monotonicamente crescentes de 64 bits que são números não consecutivos. MONOTONICALLY_INCREASING_ID() retorna, por exemplo, 8589934592 e 25769803776
Funções Condicionais
FunçãoDescriçãoExemplo
COALESCE(value, value [, value]*)Retorna o primeiro argumento não nulo, se ele existir; caso contrário, retorna um nulo.COALESCE(NULL, 1, NULL) retorna 1
NULLIF(value, value)Retorna nulo se os dois valores forem iguais, caso contrário, retorna o primeiro valor.NULLIF('ABC','XYZ') retorna ABC
Funções Hierárquicas
FunçãoDescriçãoExemplo
SCHEMA_OF_JSON(string)Faz parsing de uma string JSON e infere o esquema no formato DDL.

SCHEMA_OF_JSON('[{\"Zipcode\":704,\"ZipCodeType\":\"STANDARD\",\"City\":\"ORACLECITY\",\"State\":\"OC\"}]') retorna 'ARRAY<STRUCT<City:string,State:string,ZipCodeType:string,Zipcode:bigint>>'

SCHEMA_OF_JSON('[{\"col\":0}]') retorna 'ARRAY<STRUCT<col: BIGINT>>'

FROM_JSON(column, string)

Faz parsing de uma coluna que contém uma string JSON em um dos tipos a seguir, com o esquema especificado.

  • Map, com String como tipo de chave
  • Struct
  • Array

FROM_JSON('{\"Zipcode\":704,\"City\":\"ORACLE CITY\"}', 'STRUCT<Zipcode: BIGINT, City: STRING>') retorna uma coluna de tipo Struct com o esquema especificado: {704, ORACLE CITY}

FROM_JSON('{\"a\":1, \"b\":0.8}', 'STRUCT<a: BIGINT, b: DOUBLE>') retorna uma coluna de tipo Struct com o esquema especificado: {1, 0.8}

TO_JSON(column)Converte uma coluna que contém um tipo Struct ou Array de Structs ou um tipo Map ou Array de Map em uma string JSON.TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) retorna uma string JSON {"s1":[1,2,3],"s2":{"key":"value"}}
TO_MAP(string,column[,string,column]*)Cria uma nova coluna do tipo Map. As colunas de entrada devem ser agrupadas como pares de chave/valor. As colunas de chave de entrada não podem ser nulas e devem ter todas o mesmo tipo de dados. As colunas de valor de entrada devem todas ter o mesmo tipo de dados.

TO_MAP('Ename',Expression_1.attribute1) retorna uma coluna de tipo Map: {"ENAME" -> 100}

TO_MAP('block', EXPRESSION_1.MYSOURCE.address.block, 'unit', EXPRESSION_1.MYSOURCE.address.unit) retorna uma coluna de tipo Map: {"block" -> 1,"unit" -> 1}

TO_STRUCT(string,column[,string,column]*)Cria uma nova coluna do tipo Struct. As colunas de entrada devem ser agrupadas como pares de chave/valor.

TO_STRUCT('Ename',Expression_1.attribute1) retorna {100}

TO_STRUCT('Id',Expression_1.attribute1, 'Name', Expression_1.attribute2) retorna {100, "John"}

TO_ARRAY(column[,column]*)Cria uma nova coluna como tipo Array. As colunas de entrada devem todas ter o mesmo tipo de dados.

TO_Array(Expression_1.attribute1) retorna [100]

TO_ARRAY(EXPRESSION_1.attribute2,EXPRESSION_1.attribute3) retorna ["John","Friend"]

Funções de Ordem Superior

Os operadores de fluxo de dados que suportam a criação de expressões e tipos de dados hierárquicos podem usar funções de ordem superior.

Estes são os operadores suportados:

  • Agregado

  • Expressão

  • Filtro

  • Associar

  • Lookup

  • Divisão

  • Deslocar

FunçãoDescriçãoExemplo
TRANSFORM(column, lambda_function)Recebe uma matriz e uma função anônima e configura uma nova matriz aplicando a função a cada elemento e atribuindo o resultado à matriz de saída.Para um array de entrada de inteiros [1, 2, 3], TRANSFORM(array, x -> x + 1) retorna um novo array de [2, 3, 4].
TRANSFORM_KEYS(column, lambda_function)Usa um mapa e uma função com 2 argumentos (chave e valor) e retorna um mapa no qual as chaves têm o tipo do resultado da função lambda, e os valores têm o tipo dos valores de mapa da coluna.Para um mapa de entrada com chaves inteiras e valores de string {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'}, TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) retorna um novo mapa de {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'}.
TRANSFORM_VALUES(column, lambda_function)Usa um mapa e uma função com 2 argumentos (chave e valor) e retorna um mapa no qual os valores têm o tipo do resultado das funções lambda, e as chaves têm o tipo das chaves de mapa de coluna. Para um mapa de entrada com chaves de string e valores de string {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'}, TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) retorna um novo mapa de {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'}.
ARRAY_SORT(array(...), lambda_function)

Somente o operador de Expressão suporta ARRAY_SORT.

Recebe uma matriz e classifica de acordo com a função fornecida que recebe 2 argumentos.

A função deve retornar -1, 0 ou 1, dependendo de o primeiro elemento ser menor que, igual a ou maior que o segundo elemento.

Se a função for omitida, a matriz será classificada em ordem crescente.

array_sort(to_array(5, 6, 1),
                   (left, right) -> CASE WHEN left < right THEN -1
                                         WHEN left > right THEN 1 ELSE 0 END)

A matriz retornada é:

[1,5,6]

Operador de Junção

Use o operador de junção para vincular dados de várias origens de entrada.

Adicionando e configurando um operador de junção
  1. No painel Operadores, arraste um operador de Junção para a tela.
  2. Com o operador de junção focalizado, na guia Detalhes do painel Propriedades, digite um nome no campo Identificador ou deixe o nome como está.
  3. Selecione o Tipo de junção. Os tipos de junção suportados são:
    Tipos de Junção
    Ícone Tipo de Junção Descrição
    diagrama de venn de junção interna Interna Seleciona os dados das duas origens de entrada em que a condição de junção é atendida.
    diagrama de junção externa esquerda Externo esquerdo Seleciona todos os dados da origem de entrada 1 e os dados da origem de entrada 2 em que a condição de junção é atendida.
    diagrama de junção externa direita Externo direito Seleciona os dados da origem de entrada 1 em que a condição de junção é atendida e todos os dados da origem de entrada 2.
    diagrama de venn de junção externa total Externo completo Seleciona todos os dados das duas origens de entrada, correspondendo linhas nas quais as correspondências podem ser feitas e inserindo nulos onde nenhuma correspondência é encontrada.
  4. Ao lado de Condição de junção, selecione Criar.
  5. No painel Criar Condição de Junção, seção Condition Builder, você pode clicar duas vezes ou arrastar atributos, parâmetros e funções para adicionar ao editor e criar uma condição. Você também pode digitar uma expressão de condição manualmente no editor e validar a expressão.
    Observação

    No editor, um elemento adicionado, como uma função, pode ter espaços reservados. Para substituir um espaço reservado por outro elemento, destaque o espaço reservado e clique duas vezes em outro elemento da lista.
  6. Selecione Criar.
  7. (Opcional) Selecione Designar parâmetro para usar parâmetros para que a condição de junção não seja vinculada ao código compilado quando você publicar o fluxo de dados. Consulte Designando um Parâmetro.
  8. Na guia Atributos, selecione para exibir atributos de entrada ou saída. Os atributos de entrada são vinculados ao operador no lado esquerdo. Os atributos de saída são vinculados ao operador no lado direito e vão para o operador seguinte.

    Você pode selecionar atributos individuais ou usar ícones de filtro para filtrar a lista de atributos. Em seguida, aplique as regras de exclusão em massa aos atributos selecionados ou filtrados.

    • Selecione o ícone de filtro na coluna Nome para filtrar atributos por um padrão de nome. No campo de filtro, digite uma expressão regular simples. Você pode usar os curingas ? e * no padrão regex.
    • Selecione o ícone de filtro na coluna Tipo para filtrar atributos por um tipo de dados. Use o menu para selecionar o tipo a ser usado como filtro.
      Observação

      Você só pode aplicar um filtro de padrão de nome, mas vários filtros de tipo por vez. Por exemplo, para filtrar pelo padrão de nome *_CODE e pelo tipo numérico ou varchar, você aplica um filtro de padrão de nome (*_CODE) e dois filtros de tipo (numérico, varchar).
    • Use o menu Ações para aplicar regras de exclusão em massa aos atributos selecionados ou filtrados. Selecione Excluir por seleção ou Excluir por filtro aplicado.
    • Selecione Verificar regras para abrir o painel Regras. Você pode exibir e gerenciar as regras que foram aplicadas à entidade de dados. Por padrão, a primeira regra no painel Regras inclui tudo.

    Um tipo complexo é mostrado como ARRAY (data type), COMPOSITE ou MAP (key type, value type). Consulte Tipos de Dados Hierárquicos para entender o que é suportado para tipos complexos.

  9. Na guia Dados, exiba uma amostra dos dados, com base na configuração do operador e em todas as regras aplicadas na guia Atributos.

    O Perfil de Dados não é exibido para atributos de dados complexos. Para atributos de dados complexos, para exibir a hierarquia da estrutura de dados em uma estrutura simplificada, selecione os dados complexos mostrados. Por exemplo, [...] ou {…}.

    Você pode aplicar transformações a atributos individuais ou fazer uma transformação em massa em um grupo de atributos.

    Para entidades com tipos de dados hierárquicos, consulte Tipos de Dados Hierárquicos para entender o que é suportado.

  10. Na guia Validação, verifique advertências ou erros que possam causar falha no fluxo de dados.
Criando uma condição de junção

Use o Condition Builder para selecionar visualmente elementos para criar uma condição de junção. Também é possível informar uma condição de junção manualmente no editor.

A criação de uma condição de junção permite selecionar dados de duas origens de entrada com base na condição.

Os elementos que podem ser usados em uma condição de junção incluem atributos de entrada, parâmetros e funções. Você pode clicar duas vezes ou arrastar um elemento da lista para adicionar ao editor para criar uma condição. É possível validar a condição antes de criá-la.

Entrada exibe os atributos das portas anteriores conectadas ao operador de junção como duas pastas JOIN distintas. Exiba os atributos de cada porta expandindo ou contraindo a pasta JOIN apropriada. Por exemplo, JOIN_1_1 e JOIN_1_2.

JOIN_1_1.BANK_CUSTOMER.ADDRESS_ID = JOIN_1_2.BANK_ADDRESS.ADDRESS_ID

Os Parâmetros são os parâmetros da expressão adicionados ao fluxo de dados usando o Construtor de Condições (operadores filtro, junção, pesquisa e divisão) ou Construtor de Expressões (operadores agregados e de expressão). Um parâmetro de expressão tem um nome, um tipo e um valor padrão. Consulte Adicionando um Parâmetro de Expressão.

Suponha que você queira unir duas origens e reter apenas as linhas em que BANK_NAME='ABC Bank'. Você pode criar um parâmetro VARCHAR com o nome P_VARCHAR e definir o valor padrão como ABC BANK. Em seguida, você pode criar a expressão de junção como:

JOIN_1_1.ADDRESSES.BANK_ID = JOIN_1_2.BANK.BANK_ID AND JOIN_1_2.BANK.BANK_NAME = $P_VARCHAR

As Funções são aquelas disponíveis no serviço Data Integration que você pode usar em uma condição. Funções são operações executadas em argumentos transmitidos à função. As funções calculam, manipulam ou extraem valores de dados de argumentos.

Veja a seguir uma lista de funções que estão disponíveis para você adicionar quando construir as condições:

Funções de Hash
FunçãoDescriçãoExemplo
MD5(all data types)Calcula uma soma de verificação MD5 do tipo de dados e retorna um valor de string. MD5(column_name)
SHA1(all data types)Calcula um valor de hash SHA-1 do tipo de dados e retorna um valor de string. SHA1(column_name)
SHA2(all data types, bitLength)Calcula um valor de hash SHA-2 do tipo de dados e retorna um valor de string. bitLengthé um número inteiro. SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512).
ORA_HASH(expr, [max_bucket], [seed_value])

Calcula um valor de hash para expr e retorna um valor NUMBER.

expr pode ser uma expressão, uma coluna, um literal.

max_bucket é o valor máximo de bucket retornado, entre 0 e 4294967295 (padrão).

seed_value é um valor entre 0 (padrão) e 4294967295.

A Oracle aplica a função hash à combinação de expr e seed_value para produzir muitos resultados diferentes para o mesmo conjunto de dados.

ORA_HASH('1')

ORA_HASH('b', 2)

ORA_HASH(100, 10, 10)

ORA_HASH(EXPRESSION_1.CUSTOMERS.SSN, 2)

Funções Aritméticas
FunçãoDescriçãoExemplo
ABS(numeric)Retorna a potência absoluta do valor numeric.ABS(-1)
CEIL(numeric)Retorna o menor inteiro não maior que o valor numericCEIL(-1,2)
FLOOR(numeric)Retorna o maior inteiro não maior que o valor numeric.FLOOR(-1,2)
MOD(numeric1, numeric2)Retorna o resto depois que numeric1 é dividido por numeric2.MOD(8,2)
POWER(numeric1, numeric2)Eleva numeric1 à potência de numeric2.POWER(2,3)
ROUND(numeric1, numeric2)Retorna numeric1 arredondado para numeric2 casas decimais.ROUND(2.5,0)
TRUNC(numeric1, numeric2)Retorna numeric1 truncado em numeric2 casas decimais.TRUNC(2.5,0)
TO_NUMBER(expr[, format, locale])Converte um expr em um número, com base em format e em locale opcional fornecidos. A configuração regional padrão é en-US. Tags de idioma suportadas.

Padrões de formato suportados:

  • 0: Um dígito
  • #: Um dígito, zero mostra como ausente
  • .: Espaço reservado para separador decimal
  • ,: Espaço reservado para separador de agrupamento
  • E: Separa mantissa e expoente para formatos exponenciais
  • -: Prefixo negativo padrão
  • ¤: Sinal de moeda; substituído pelo símbolo de moeda; se duplo, substituído pelo símbolo de moeda internacional; se presente em um padrão, o separador decimal monetário é usado no lugar do separador decimal

TO_NUMBER('5467.12') returns retorna 5467.12

TO_NUMBER('-USD45,677.7', '¤¤##,###.#', 'en-US') retorna -45677.7

Funções de Date e Hora
Função Descrição Exemplo
CURRENT_DATE Retorna a data atual. CURRENT_DATEretorna a data de hoje, como 2023-05-26
CURRENT_TIMESTAMP Retorna a data atual e a hora do fuso horário da sessão. CURRENT_TIMESTAMP retorna a data e a hora atuais de hoje, como 2023-05-26 12:34:56
DATE_ADD(date, number_of_days) Retorna a data que é o number especificado de dias após o date especificado. DATE_ADD('2017-07-30', 1) retorna 2017-07-31
DATE_FORMAT(expr, format[, locale])

Formata uma expr de Data, com base no format e no locale opcional fornecidos. A configuração regional padrão é en-US. Tags de idioma suportadas.

Padrões de formato de data suportados:

  • yy: ano com dois dígitos
  • yyyy: ano com quatro dígitos
  • M: Mês numérico, como 1 para janeiro
  • MM: Mês numérico, como 01 para janeiro
  • MMM: Mês resumido, como Jan
  • MMMMMM: Mês completo, como Janeiro
  • d: Dia numérico do mês, como 1 para 1 de junho
  • dd: Dia numérico do mês, como 01 para 1 de junho
  • DDD: Dia numérico do ano de 001 a 366, como 002 para 2 de janeiro
  • F: Dia numérico da semana em um mês, como 3 para a 3a segunda-feira de junho.
  • EEE ou E: Dia nomeado abreviado da semana, como Dom para domingo
  • EEEE: Dia da semana nomeado, como Domingo
  • HHH: formato de 24 horas de 00 a 23
  • H: formato de 0 a 23 horas
  • hh: formato de 12 horas de 01 a 12
  • h: formato de 12 horas de 1 a 12
  • mm: minutos de 00 a 59
  • ss: segundos de 00 a 59
  • SSS: milissegundos de 000 a 999
  • a: AM ou PM
  • z: fuso horário, como PDT

DATE_FORMAT(Date '2020-10-11', 'yyyy-MM-dd') retorna '2020-10-11'. O primeiro argumento é um objeto Date representando 11 de outubro de 2020.

DATE_FORMAT(Date '2018-junio-17', 'yyyy/MMMM/dd', 'es-ES') retorna '2018/junio/17'

DAYOFMONTH(date) Retorna o dia da data no mês. DAYOFMONTH('2020-12-25') retorna 25
DAYOFWEEK(date) Retorna o dia da data na semana. DAYOFWEEK('2020-12-25') retorna 6 para sexta-feira. Nos Estados Unidos, o domingo é considerado 1, a segunda-feira é 2 e assim por diante.
DAYOFYEAR(date) Retorna o dia da data no ano. DAYOFYEAR('2020-12-25') retorna 360
WEEKOFYEAR(date) Retorna a semana da data no ano.

WEEKOFYEAR('2022-07-28') retorna 30

WEEKOFYEAR('2022-07-28 13:24:30') retorna 30

HOUR(datetime) Retorna o valor da hora da data/hora. HOUR('2020-12-25 15:10:30') retorna 15
LAST_DAY(date) Retorna o último dia do mês da data. LAST_DAY('2020-12-25') retorna 31
MINUTE(datetime) Retorna o valor do minuto da data e hora. HOUR('2020-12-25 15:10:30') retorna 10
MONTH(date) Retorna o valor do mês da data. MONTH('2020-06-25') retorna 6
QUARTER(date) Retorna o trimestre do ano em que a data está. QUARTER('2020-12-25') retorna 4
SECOND(datetime) Retorna o valor de segundo da data e hora. SECOND('2020-12-25 15:10:30') retorna 30
TO_DATE(string, format_string[, localeStr]) Faz parsing da expressão de string com a expressão format_string para uma data. A configuração regional é opcional. O padrão é en-US. Tags de idioma suportadas.

Nas expressões do pipeline, format_string deve usar os códigos de formato strftime. Caso contrário, as strings de formato com distinção entre maiúscula/minúscula suportadas serão:

  • yy: ano com dois dígitos
  • yyyy: ano com quatro dígitos
  • M: Mês numérico, como 1 para janeiro
  • MM: Mês numérico, como 01 para janeiro
  • MMM: Mês resumido, como Jan
  • MMMMMM: Mês completo, como Janeiro
  • d: Dia numérico do mês, como 1 para 1 de junho
  • dd: Dia numérico do mês, como 01 para 1 de junho
  • DDD: Dia numérico do ano de 001 a 366, como 002 para 2 de janeiro
  • F: Dia numérico da semana em um mês, como 3 para a 3a segunda-feira de junho.
  • EEE ou E: Dia nomeado abreviado da semana, como Dom para domingo
  • EEEE: Dia da semana nomeado, como Domingo
  • HHH: formato de 24 horas de 00 a 23
  • H: formato de 0 a 23 horas
  • hh: formato de 12 horas de 01 a 12
  • h: formato de 12 horas de 1 a 12
  • mm: minutos de 00 a 59
  • ss: segundos de 00 a 59
  • SSS: milissegundos de 000 a 999
  • a: AM ou PM
  • z: fuso horário, como PDT

TO_DATE('31 December 2016', 'dd MMMM yyyy') retorna um valor de Data igual a 2016-12-31

TO_DATE('2018/junio/17', 'yyyy/MMMM/dd', 'es-ES') retorna um valor de Data igual a 2018-06-17

TO_TIMESTAMP(expr, format_string[, localeStr]) Converte um expr de VARCHAR em um valor de TIMESTAMP, com base no valor format_string e no valor localeStr opcional fornecidos.

Nas expressões do pipeline, format_string deve usar os códigos de formato strftime. Caso contrário, os padrões de formato suportados serão:

  • yy: ano com dois dígitos
  • yyyy: ano com quatro dígitos
  • M: Mês numérico, como 1 para janeiro
  • MM: Mês numérico, como 01 para janeiro
  • MMM: Mês resumido, como Jan
  • MMMMMM: Mês completo, como Janeiro
  • d: Dia numérico do mês, como 1 para 1 de junho
  • dd: Dia numérico do mês, como 01 para 1 de junho
  • DDD: Dia numérico do ano de 001 a 366, como 002 para 2 de janeiro
  • F: Dia numérico da semana em um mês, como 3 para a 3a segunda-feira de junho.
  • EEE ou E: Dia nomeado abreviado da semana, como Dom para domingo
  • EEEE: Dia da semana nomeado, como Domingo
  • HHH: formato de 24 horas de 00 a 23
  • H: formato de 0 a 23 horas
  • hh: formato de 12 horas de 01 a 12
  • h: formato de 12 horas de 1 a 12
  • mm: minutos de 00 a 59
  • ss: segundos de 00 a 59
  • SSS: milissegundos de 000 a 999
  • a: AM ou PM
  • z: fuso horário, como PDT
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') retorna um objeto TIMESTAMP que representa 11am 10:10 Oct 11th, 2020
WEEK(date)

Retorna o valor da semana da data.

WEEK('2020-06-25') retorna 4
YEAR(date) Retorna o valor do ano da data. YEAR('2020-06-25') retorna 2020
ADD_MONTHS(date_expr, number_months) Retorna a data após a adição do número especificado de meses à data, timestamp ou string especificada com um formato yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS.

ADD_MONTHS('2017-07-30', 1) retorna 2017-08-30

ADD_MONTHS('2017-07-30 09:07:21', 1) retorna 2017-08-30

MONTHS_BETWEEN(start_date_expr, end_date_expr)

Retorna o número de meses entre start_date_expr e end_date_expr. start_date_expr e end_date_expr podem ser uma data, um timestamp ou uma string com um formato yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Um número inteiro será retornado se as duas datas forem o mesmo dia do mês ou se ambas forem o último dia em seus respectivos meses. Caso contrário, a diferença será calculada com base em 31 dias por mês.

MONTHS_BETWEEN('2022-01-01', '2022-01-31') retorna 1

MONTHS_BETWEEN('2022-07-28', '2020-07-25') retorna 24

MONTHS_BETWEEN('2022-07-28 13:24:30', '2020-07-25 13:24:30') retorna 24

FROM_UTC_TIMESTAMP(time_stamp, time_zone)

Interpreta uma data, um timestamp ou uma string como horário UTC e converte esse horário em um timestamp no fuso horário especificado.

Para string, use um formato como: yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

O formato de fuso horário é um ID de zona baseado em região (por exemplo, 'área/cidade', como 'Asia/Seoul', ou um deslocamento de fuso horário (por exemplo, UTC+02).

FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') retorna 2017-07-14 03:40:00.0
TO_UTC_TIMESTAMP(time_stamp, time_zone)

Converte uma data, um timestamp ou uma string no fuso horário especificado em um timestamp UTC.

Para string, use um formato como: yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

O formato de fuso horário é um ID de zona baseado em região (por exemplo, 'área/cidade', como 'Asia/Seoul'), ou um deslocamento de fuso horário (por exemplo, UTC+02).

TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') retorna 2017-07-14 01:40:00.0
FROM_UNIXTIME(unix_time[, fmt])

Converte a época ou o horário especificado do Unix em uma string que representa o timestamp desse momento no fuso horário do sistema atual e no formato especificado.

Observação: O horário do Unix é o número de segundos decorridos desde 1o de janeiro de 1970 00:00:00 UTC.

Se fmt for omitido, o formato padrão será yyyy-MM-dd HH:mm:ss

FROM_UNIXTIME(1255033470) retorna '2009-10-08 13:24:30'

FROM_UNIXTIME(1637258854) retorna '2021-11-18 10:07:34'

O fuso horário padrão é PST nos exemplos

UNIX_TIMESTAMP([time_expr[, fmt]])

Converte o horário atual ou especificado em um timestamp do Unix em segundos.

time_expr é uma data, um timestamp ou uma string com um formato yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Se time_expr não for informado, o horário atual será convertido.

Se time_expr for uma string e fmt for omitido, o padrão será yyyy-MM-dd HH:mm:ss

UNIX_TIMESTAMP('1970-01-01 00:00:00', 'yyyy-MM-dd HH:mm:ss') retorna 28800

O fuso horário padrão é PST neste exemplo

INTERVAL 'year' YEAR[(year_precision)]

Retorna um período em anos.

year_precision é o número de dígitos no campo year; ele varia de 0 a 9. Se year_precision for omitido, o padrão será 2 (deve ser menor que 100 anos).

INTERVAL '1' YEAR retorna um intervalo de 1 ano

INTERVAL '200' YEAR(3) retorna um intervalo de 200 anos

INTERVAL 'year month' YEAR[(year_precision)] TO MONTH

Retorna um período em anos e meses. Use para armazenar um período usando os campos year e month.

year_precision é o número de dígitos no campo year; ele varia de 0 a 9. Se year_precision for omitido, o padrão será 2 (deve ser menor que 100 anos).

INTERVAL '100-5' YEAR(3) TO MONTH retorna um intervalo de 100 anos e 5 meses. Especifique a precisão do ano principal de 3.
INTERVAL 'month' MONTH[(month_precision)]

Retorna um período em meses.

month_precision é o número de dígitos no campo mês; ele varia de 0 a 9. Se month_precision for omitido, o padrão será 2 (deve ser menor que 100 anos).

INTERVAL '200' MONTH(3) retorna um intervalo de 200 meses. Especifique a precisão do mês de 3.
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)]

Retorna um período em termos de dias, horas, minutos e segundos.

day_precision é o número de dígitos no campo day; ele varia de 0 a 9. O padrão é 2.

fractional_seconds_precision é o número de dígitos na parte fracionária do valor do segundo no campo time; ele varia de 0 a 9.

INTERVAL '11 10:09:08.555' DAY TO SECOND(3) retorna um intervalo de 11 dias, 10 horas, 09 minutos, 08 segundos e 555 milésimos de segundo
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)]

Retorna um período em termos de dias, horas e minutos.

day_precision é o número de dígitos no campo day; ele varia de 0 a 9. O padrão é 2.

minute_precision é o número de dígitos no campo minute; ele varia de 0 a 2. O padrão é 2.

INTERVAL '11 10:09' DAY TO MINUTE retorna um intervalo de 11 dias, 10 horas e 09 minutos
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)]

Retorna um período em termos de dias e horas.

day_precision é o número de dígitos no campo day; ele varia de 0 a 9. O padrão é 2.

hour_precision é o número de dígitos no campo hora; ele varia de 0 a 2. O padrão é 2.

INTERVAL '100 10' DAY(3) TO HOUR retorna um intervalo de 100 dias e 10 horas
INTERVAL 'day' DAY[(day_precision)]

Retorna um período em termos de dias.

day_precision é o número de dígitos no campo day; ele varia de 0 a 9. O padrão é 2.

INTERVAL '999' DAY(3) retorna um intervalo de 999 dias
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)]

Retorna um período em termos de horas, minutos e segundos.

hour_precision é o número de dígitos no campo hora; ele varia de 0 a 2. O padrão é 2.

fractional_seconds_precision é o número de dígitos na parte fracionária do valor do segundo no campo time; ele varia de 0 a 9.

INTERVAL '09:08:07.6666666' HOUR TO SECOND(7) retorna um intervalo de 9 horas, 08 minutos e 7.6666666 segundos
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)]

Retorna um período em termos de horas e minutos.

hour_precision é o número de dígitos no campo hora; ele varia de 0 a 2. O padrão é 2.

minute_precision é o número de dígitos no campo minute; ele varia de 0 a 2. O padrão é 2.

INTERVAL '09:30' HOUR TO MINUTE retorna um intervalo de 9 horas e 30 minutos
INTERVAL 'hour' HOUR[(hour_precision)]

Retorna um período em termos de horas.

hour_precision é o número de dígitos no campo hora; ele varia de 0 a 2. O padrão é 2.

INTERVAL '40' HOUR retorna um intervalo de 40 horas
INTERVAL 'minute' MINUTE[(minute_precision)]

Retorna um período em termos de minutos.

minute_precision é o número de dígitos no campo minute; ele varia de 0 a 2. O padrão é 2.

INTERVAL '15' MINUTE retorna um intervalo de 15 minutos
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)]

Retorna um período em termos de minutos e segundos.

minute_precision é o número de dígitos no campo minute; ele varia de 0 a 2. O padrão é 2.

fractional_seconds_precision é o número de dígitos na parte fracionária do valor do segundo no campo time; ele varia de 0 a 9.

INTERVAL '15:30' MINUTE TO SECOND retorna um intervalo de 15 minutos e 30 segundos
INTERVAL 'second' SECOND[(fractional_seconds_precision)]

Retorna um período em termos de segundos.

fractional_seconds_precision é o número de dígitos na parte fracional do campo segundo; ele varia de 0 a 9. O padrão é 3.

INTERVAL '15.678' SECOND retorna um intervalo de 15,678 segundos
Funções Analíticas
Função Descrição Exemplo
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) Retorna o valor avaliado na linha que é a primeira do quadro da janela. FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) retorna o primeiro valor BANK_ID em uma janela na qual as linhas são calculadas como linha atual e 1 linha após essa linha, particionadas por BANK_ID e em ordem crescente de BANK_NAME.
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) Retorna o valor avaliado na linha em um determinado deslocamento antes da linha atual dentro da partição. Se não houver essa linha, o valor padrão será retornado. O deslocamento e o padrão são avaliados em relação à linha atual. Se omitido, o desvio é padronizado como 1 e o padrão é NULL. LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) retorna o valor BANK_ID da segunda linha antes da linha atual, particionada por BANK_ID e em ordem decrescente de BANK_NAME. Se não houver esse valor, hello será retornado.
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) Retorna o valor avaliado na linha que é a última do quadro da janela. LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) retorna o último valor BANK_ID em uma janela na qual as linhas são calculadas como a linha atual e 1 linha após essa linha, particionada por BANK_ID e em ordem crescente de BANK_NAME.
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) Retorna o valor avaliado na linha em um determinado deslocamento após a linha atual dentro da partição. Se não houver essa linha, o valor padrão será retornado. O deslocamento e o padrão são avaliados em relação à linha atual. Se omitido, o desvio é padronizado como 1 e o padrão é NULL. LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retorna o valor BANK_ID da segunda linha após a linha atual, particionada por BANK_ID e em ordem crescente de BANK_NAME. Se não houver esse valor, hello será retornado.
RANK() OVER([ partition_clause ] order_by_clause) Retorna a classificação da linha atual com lacunas, contando a partir de 1. RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retorna a classificação de cada linha dentro do grupo de partições de BANK_ID, em ordem crescente de BANK_NAME.
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) Retorna o número exclusivo da linha atual dentro de sua partição, contando a partir de 1. ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retorna o número de linha exclusivo de cada linha dentro do grupo de partições de BANK_ID, em ordem crescente de BANK_NAME.
Funções da String
FunçõesDescriçãoExemplo
CAST(value AS type)Retorna o valor especificado no tipo especificado.CAST("10" AS INT) retorna 10
CONCAT(string, string)Retorna os valores combinados de strings ou colunas.CONCAT('Oracle','SQL') retorna OracleSQL
CONCAT_WS(separator, expression1, expression2, expression3,...) Retorna os valores combinados de strings ou colunas usando o separador especificado entre as strings ou colunas.

Um separador é obrigatório e deve ser uma string.

Pelo menos uma expressão deve ser fornecida após o separador. Por exemplo: CONCAT_WS(',' col1)

CONCAT_WS('-', 'Hello', 'Oracle') retorna Hello-Oracle

CONCAT_WS(' ', address, city, postal_code) retorna 123 MyCity 987654

Se um filho da função for um array, o array será nivelado:

CONCAT_WS(',', 1,2,3, to_array(4,5,6), to_array(7,8), 9) retorna 1,2,3,4,5,6,7,8,9

INITCAP(string)Retorna a string com a primeira letra de cada palavra em maiúscula, enquanto todas as outras letras ficam em minúsculas e cada palavra é delimitada por um espaço em branco.INITCAP('oRACLE sql') retorna Oracle Sql
INSTR(string, substring[start_position])Retorna o índice (baseado em 1) da primeira ocorrência de substring em string.INSTR('OracleSQL', 'SQL') retorna 7
LOWER(string)Retorna a string com todas as letras alteradas para minúsculas.LOWER('ORACLE') retorna oracle
LENGTH(string)Retorna o tamanho do caractere da string ou o número de bytes de dados binários. O tamanho da string inclui espaços à direita.LENGTH('Oracle') retorna 6
LTRIM(string)Retorna a string com espaços à esquerda removidos.LTRIM(' Oracle')
NVL(expr1, epxr2)Retorna o argumento que não é nulo.NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID())
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx])Pesquisa e extrai a string que corresponde a um padrão de expressão regular da string de entrada. Se o índice do grupo de captura opcional for informado, a função extrairá o grupo específico.

REGEXP_SUBSTR('https://www.oracle.com/products', 'https://([[:alnum:]]+\.?){3,4}/?') retorna https://www.oracle.com

REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) retorna 22
REPLACE(string, search, replacement)Substitui todas as ocorrências de search por replacement.

Se search não for encontrado na string, ela será retornada inalterada.

Se replacement não for especificado ou for uma string vazia, nada substituirá search que é removido de string.

REPLACE('ABCabc', 'abc', 'DEF') retorna ABCDEF
RTRIM(string)Retorna a string com espaços à esquerda removidos da direita.RTRIM('Oracle ')
SUBSTRING(string, position[, substring_length])Retorna a substring que começa na posição. SUBSTRING('Oracle SQL' FROM 2 FOR 3) returns rac
Para números, TO_CHAR(expr) e datas TO_CHAR(expr, format[, locale])Converte números e datas em strings. Para números, nenhum formato é necessário. Para datas, use o mesmo formato que DATE_FORMAT descrito em Funções de Data e Hora. A configuração regional padrão é en-US. Consulte tags de idioma suportadas.

Nas expressões do pipeline, format_string deve usar os códigos de formato strftime. Caso contrário, os padrões de formato de data suportados são:

  • yy: ano com dois dígitos
  • yyyy: ano com quatro dígitos
  • M: Mês numérico, como 1 para janeiro
  • MM: Mês numérico, como 01 para janeiro
  • MMM: Mês resumido, como Jan
  • MMMMMM: Mês completo, como Janeiro
  • d: Dia numérico do mês, como 1 para 1 de junho
  • dd: Dia numérico do mês, como 01 para 1 de junho
  • DDD: Dia numérico do ano de 001 a 366, como 002 para 2 de janeiro
  • F: Dia numérico da semana em um mês, como 3 para a 3a segunda-feira de junho.
  • EEE ou E: Dia nomeado abreviado da semana, como Dom para domingo
  • EEEE: Dia da semana nomeado, como Domingo
  • HHH: formato de 24 horas de 00 a 23
  • H: formato de 0 a 23 horas
  • hh: formato de 12 horas de 01 a 12
  • h: formato de 12 horas de 1 a 12
  • mm: minutos de 00 a 59
  • ss: segundos de 00 a 59
  • SSS: milissegundos de 000 a 999
  • a: AM ou PM
  • z: fuso horário, como PDT

Exemplo de número: TO_CHAR(123) retorna 123

Exemplo de data: TO_CHAR(Date '2020-10-30', 'yyyy.MM.dd', 'en-US') retorna a string 2020.10.30. O primeiro argumento é um objeto Date representando 30 de outubro de 2020.

UPPER(string)Retorna uma string com todas as letras alteradas para maiúsculas.UPPER('oracle') retorna ORACLE
LPAD(str, len[, pad])Retorna uma string preenchida à esquerda com caracteres especificados para um determinado tamanho. Se o caractere pad for omitido, o padrão será um espaço.LPAD('ABC', 5, '*') retorna '**ABC'
RPAD(str, len[, pad])Retorna uma string preenchida à direita com caracteres especificados para um determinado tamanho. Se o caractere pad for omitido, o padrão será um espaço.RPAD('XYZ', 6, '+' ) returns 'XYZ+++'
Funções do Operador (Comparação)
FunçãoDescriçãoExemplo
CASE WHEN condition1 THEN result1 ELSE result2 ENDRetorna o valor cuja condição é atendida.CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END retorna ABC se 1> 0; caso contrário, retorna XYZ
ANDO operador lógico AND. Retorna verdadeiro se os dois operandos forem verdadeiros; caso contrário, retorna falso.(x = 10 AND y = 20) retorna "true" se x for igual a 10 e y for igual a 20. Se um dos dois não for verdadeiro, retornará "false"
ORO operador lógico OR. Retorna verdadeiro se um operando for verdadeiro ou ambos forem verdadeiros; caso contrário, retorna falso.(x = 10 OR y = 20) retorna "false" se x não for igual a 10 e também y não for igual a 20. Se um for verdadeiro, retornará "true"
NOTO operador lógico NOT.
LIKEExecuta correspondência de padrão de string, se string1 corresponder ao padrão em string2.
=Verifica a igualdade. Retorna verdadeiro se expr1 for igual a expr2; caso contrário, retorna falso.x = 10 retorna "true" quando o valor de x é 10, caso contrário, retorna "false"
!=Verifica a desigualdade. Retorna verdadeiro se expr1 não for igual a expr2; caso contrário, retorna falso.x != 10 retorna "false" se o valor de x for 10, caso contrário, retorna "true"
>Verifica uma expressão maior que. Retorna verdadeiro se expr1 for maior que expr2.x > 10 retorna "true" se o valor de x for maior que 10, caso contrário, retorna "false"
>=Testa uma expressão maior que ou igual a. Retorna verdadeiro se expr1 for maior ou igual a expr2.x > =10 retorna "true" se o valor de x for maior ou igual a 10, caso contrário, retorna "false"
<Testa uma expressão menor que. Retorna verdadeiro se expr1 for menor que expr2.x < 10 retorna "true" se o valor de x for menor que 10, caso contrário, retornará "false"
<=Testa uma expressão menor que ou igual a. Retorna verdadeiro se expr1 for menor ou igual a expr2.x <= 10 retorna "true" se o valor de x for menor que 10, caso contrário, retorna "false"
||Concatena duas strings.'XYZ' || 'hello' retorna 'XYZhello'
BETWEENAvalia um intervalo.FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007
INTesta se uma expressão corresponde a uma lista de valores.FILTER_2.ORDERS.ORDER_ID IN (1003, 1007)
Funções de ID Exclusivo
FunçãoDescriçãoExemplo
NUMERIC_ID()Gera um identificador exclusivo universal que é um número de 64 bits para cada linha.NUMERIC_ID() retorna, por exemplo, 3458761969522180096 e 3458762008176885761
ROWID()Gera números monotonicamente crescentes de 64 bits.ROWID() retorna, por exemplo, 0, 1, 2 e assim por diante
UUID()Gera um identificador exclusivo universal que é uma String de 128 bit para cada linha.UUID() retorna, por exemplo, 20d45c2f-0d56-4356-8910-162f4f40fb6d
MONOTONICALLY_INCREASING_ID() Gera inteiros exclusivos e monotonicamente crescentes de 64 bits que são números não consecutivos. MONOTONICALLY_INCREASING_ID() retorna, por exemplo, 8589934592 e 25769803776
Funções Condicionais
FunçãoDescriçãoExemplo
COALESCE(value, value [, value]*)Retorna o primeiro argumento não nulo, se ele existir; caso contrário, retorna um nulo.COALESCE(NULL, 1, NULL) retorna 1
NULLIF(value, value)Retorna nulo se os dois valores forem iguais, caso contrário, retorna o primeiro valor.NULLIF('ABC','XYZ') retorna ABC
Funções Hierárquicas
FunçãoDescriçãoExemplo
SCHEMA_OF_JSON(string)Faz parsing de uma string JSON e infere o esquema no formato DDL.

SCHEMA_OF_JSON('[{\"Zipcode\":704,\"ZipCodeType\":\"STANDARD\",\"City\":\"ORACLECITY\",\"State\":\"OC\"}]') retorna 'ARRAY<STRUCT<City:string,State:string,ZipCodeType:string,Zipcode:bigint>>'

SCHEMA_OF_JSON('[{\"col\":0}]') retorna 'ARRAY<STRUCT<col: BIGINT>>'

FROM_JSON(column, string)

Faz parsing de uma coluna que contém uma string JSON em um dos tipos a seguir, com o esquema especificado.

  • Map, com String como tipo de chave
  • Struct
  • Array

FROM_JSON('{\"Zipcode\":704,\"City\":\"ORACLE CITY\"}', 'STRUCT<Zipcode: BIGINT, City: STRING>') retorna uma coluna de tipo Struct com o esquema especificado: {704, ORACLE CITY}

FROM_JSON('{\"a\":1, \"b\":0.8}', 'STRUCT<a: BIGINT, b: DOUBLE>') retorna uma coluna de tipo Struct com o esquema especificado: {1, 0.8}

TO_JSON(column)Converte uma coluna que contém um tipo Struct ou Array de Structs ou um tipo Map ou Array de Map em uma string JSON.TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) retorna uma string JSON {"s1":[1,2,3],"s2":{"key":"value"}}
TO_MAP(string,column[,string,column]*)Cria uma nova coluna do tipo Map. As colunas de entrada devem ser agrupadas como pares de chave/valor. As colunas de chave de entrada não podem ser nulas e devem ter todas o mesmo tipo de dados. As colunas de valor de entrada devem todas ter o mesmo tipo de dados.

TO_MAP('Ename',Expression_1.attribute1) retorna uma coluna de tipo Map: {"ENAME" -> 100}

TO_MAP('block', EXPRESSION_1.MYSOURCE.address.block, 'unit', EXPRESSION_1.MYSOURCE.address.unit) retorna uma coluna de tipo Map: {"block" -> 1,"unit" -> 1}

TO_STRUCT(string,column[,string,column]*)Cria uma nova coluna do tipo Struct. As colunas de entrada devem ser agrupadas como pares de chave/valor.

TO_STRUCT('Ename',Expression_1.attribute1) retorna {100}

TO_STRUCT('Id',Expression_1.attribute1, 'Name', Expression_1.attribute2) retorna {100, "John"}

TO_ARRAY(column[,column]*)Cria uma nova coluna como tipo Array. As colunas de entrada devem todas ter o mesmo tipo de dados.

TO_Array(Expression_1.attribute1) retorna [100]

TO_ARRAY(EXPRESSION_1.attribute2,EXPRESSION_1.attribute3) retorna ["John","Friend"]

Funções de Ordem Superior

Os operadores de fluxo de dados que suportam a criação de expressões e tipos de dados hierárquicos podem usar funções de ordem superior.

Estes são os operadores suportados:

  • Agregado

  • Expressão

  • Filtro

  • Associar

  • Lookup

  • Divisão

  • Deslocar

FunçãoDescriçãoExemplo
TRANSFORM(column, lambda_function)Recebe uma matriz e uma função anônima e configura uma nova matriz aplicando a função a cada elemento e atribuindo o resultado à matriz de saída.Para um array de entrada de inteiros [1, 2, 3], TRANSFORM(array, x -> x + 1) retorna um novo array de [2, 3, 4].
TRANSFORM_KEYS(column, lambda_function)Usa um mapa e uma função com 2 argumentos (chave e valor) e retorna um mapa no qual as chaves têm o tipo do resultado da função lambda, e os valores têm o tipo dos valores de mapa da coluna.Para um mapa de entrada com chaves inteiras e valores de string {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'}, TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) retorna um novo mapa de {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'}.
TRANSFORM_VALUES(column, lambda_function)Usa um mapa e uma função com 2 argumentos (chave e valor) e retorna um mapa no qual os valores têm o tipo do resultado das funções lambda, e as chaves têm o tipo das chaves de mapa de coluna. Para um mapa de entrada com chaves de string e valores de string {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'}, TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) retorna um novo mapa de {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'}.
ARRAY_SORT(array(...), lambda_function)

Somente o operador de Expressão suporta ARRAY_SORT.

Recebe uma matriz e classifica de acordo com a função fornecida que recebe 2 argumentos.

A função deve retornar -1, 0 ou 1, dependendo de o primeiro elemento ser menor que, igual a ou maior que o segundo elemento.

Se a função for omitida, a matriz será classificada em ordem crescente.

array_sort(to_array(5, 6, 1),
                   (left, right) -> CASE WHEN left < right THEN -1
                                         WHEN left > right THEN 1 ELSE 0 END)

A matriz retornada é:

[1,5,6]

Operador de Expressão

Use o operador de expressão para executar uma ou mais transformações em uma única linha de dados para criar novos campos derivados.

Para usar o operador de Expressão para alterar o tipo de dados de um grupo de atributos, consulte Alterando o tipo de dados de um grupo de atributos.

Adicionando e configurando um operador de expressão
  1. No painel Operadores, arraste um operador de Expressão para a tela.
  2. Com o operador de expressão focalizado na guia Detalhes do painel Propriedades, digite um nome no campo Identifier ou deixe o nome como está.
  3. Em Expressões, selecione Adicionar expressão.
  4. No painel Adicionar Expressão, digite um nome para a expressão no campo Identifier ou deixe o nome como está.
  5. (Opcional) Para aplicar a expressão a dois ou mais atributos, selecione Permitir seleção em massa. Em seguida, selecione os atributos por nome ou usando um padrão de expressão regular. Por exemplo, suponha que você tenha três atributos de nome no conjunto de dados de origem e queira aplicar a função UPPER aos três atributos de origem. Você pode usar um padrão para selecionar esse grupo de atributos de origem.
    1. Para Atributos de Origem, selecione Padrão e Editar padrão. Em seguida, digite a expressão regular que corresponde a um grupo de atributos de origem. Por exemplo, informe *NAME para corresponder aos atributos FIRST_NAME, LAST_NAME e FULL_NAME.
    2. Selecione um tipo de dados no menu.
    3. Para Atributos de destino, digite a expressão regular para definir os nomes dos atributos de destino em Padrão. Por padrão, $0 é informado, que se refere aos nomes originais dos atributos de origem. Atualize o padrão para nomear os atributos de destino de acordo com os requisitos. Por exemplo, digite $0_UPPER para anexar o texto UPPER aos nomes originais dos atributos de origem.
    4. Por padrão, Usar tipos de dados de atributo de origem é selecionado. É possível manter a seleção. Se você desmarcar a caixa de seleção Usar tipos de dados de atributo de origem, selecione um Tipo de dados e preencha os campos correspondentes ao tipo selecionado.
  6. (Opcional) Se você não selecionou Permitir seleção em massa, em Tipo de dados da expressão, poderá selecionar Inferir tipo de dados se desejar que o criador de expressões detecte o tipo de dados na expressão que você informar. Você pode selecionar Preview data type e Validate para visualizar e atualizar o tipo de dados e validar a expressão.

    A inferência de tipo de dados é útil quando você está trabalhando com tipos de dados complexos, como Mapas, Matrizes e Estruturas, que podem ter níveis de tipos aninhados.

  7. Se você não selecionou Permitir seleção em massa e Inferir tipo de dados, selecione um valor no menu Tipo de dados e preencha os campos correspondentes ao tipo selecionado.
  8. Na seção Construtor de expressões, construa visualmente uma expressão clicando duas vezes ou arrastando atributos, parâmetros ou funções de entrada para adicionar ao editor e criar a expressão. Ou você mesmo pode criar a expressão manualmente. Consulte Adicionando uma expressão. Você também pode validar a expressão.

    Você pode usar parâmetros em expressões, incluindo parâmetros definidos pelo usuário que foram criados no fluxo de dados e parâmetros do sistema gerados pelo Data Integration no runtime.

    Se você selecionou Permitir seleção em massa, use %MACRO_INPUT% na expressão para indicar os atributos nos quais a função deve ser aplicada. Por exemplo, suponha que você usou o padrão *NAME para corresponder aos atributos de origem FIRST_NAME, LAST_NAME e FULL_NAME. Agora você pode especificar uma função como UPPER(%MACRO_INPUT%) para aplicar a função em todos os atributos que correspondem ao padrão.

    Para excluir um ou mais atributos de entrada da saída dessa expressão, marque a caixa de seleção Excluir atributos de entrada. Em seguida, use o menu para adicionar os atributos de entrada que você deseja excluir da saída. Uma regra de Exclusão é aplicada a cada atributo selecionado para exclusão. Você só pode excluir atributos quando estiver adicionando a expressão pela primeira vez. Quando você edita a expressão, a caixa de seleção Excluir atributos de entrada fica indisponível.

    Observação

    Para substituir um espaço reservado em uma função por outro elemento, destaque o espaço reservado e clique duas vezes em outro elemento da lista para adicioná-lo à função.
  9. Selecione Adicionar.
    Você poderá repetir as etapas a partir da etapa 3 para adicionar mais expressões, se necessário.
  10. Na guia Atributos, selecione para exibir os atributos de entrada ou de saída. Os atributos de entrada são vinculados ao operador no lado esquerdo. Os atributos de saída são vinculados ao operador no lado direito e vão para o operador seguinte.

    Você pode selecionar atributos individuais ou usar ícones de filtro para filtrar a lista de atributos e, em seguida, aplicar regras de exclusão em massa aos atributos selecionados ou filtrados.

    • Selecione o ícone de filtro na coluna Nome para filtrar atributos por um padrão de nome. No campo de filtro, digite uma expressão regular simples. Você pode usar os curingas ? e * no padrão regex.
    • Selecione o ícone de filtro na coluna Tipo para filtrar atributos por um tipo de dados. Use o menu para selecionar o tipo a ser usado como filtro.
      Observação

      Você só pode aplicar um filtro de padrão de nome, mas vários filtros de tipo por vez. Por exemplo, para filtrar pelo padrão de nome *_CODE e pelo tipo numérico ou varchar, você aplica um filtro de padrão de nome (*_CODE) e dois filtros de tipo (numérico, varchar).
    • Use o menu Ações para aplicar regras de exclusão em massa aos atributos selecionados ou filtrados. Selecione Excluir por seleção ou Excluir por filtro aplicado.

      Para alterar o tipo de dados de um grupo de atributos, selecione Alterar tipo de dados. Na caixa de diálogo que aparece, selecione o novo tipo de dados para os atributos selecionados ou filtrados. Em seguida, selecione quaisquer outras propriedades aplicáveis ao novo tipo de dados selecionado. Quando você seleciona Aplicar, uma expressão é adicionada à guia Detalhes, em vez de uma regra.

    • Selecione Verificar regras para abrir o painel Regras. Você pode exibir e gerenciar as regras que foram aplicadas à entidade de dados. Por padrão, a primeira regra no painel Regras inclui tudo.

    Um tipo complexo é mostrado como ARRAY (data type), COMPOSITE ou MAP (key type, value type). Consulte Tipos de Dados Hierárquicos para entender o que é suportado para tipos complexos.

  11. Na guia Dados, exiba uma amostra dos dados, com base na configuração do operador e em todas as regras aplicadas na guia Atributos.

    O Perfil de Dados não é exibido para atributos de dados complexos. Para atributos de dados complexos, para exibir a hierarquia da estrutura de dados em uma estrutura simplificada, selecione os dados complexos mostrados. Por exemplo, [...] ou {…}.

    Você pode aplicar transformações a atributos individuais ou fazer uma transformação em massa em um grupo de atributos.

    Para entidades com tipos de dados hierárquicos, consulte Tipos de Dados Hierárquicos para entender o que é suportado.

    Consulte também Adicionando uma expressão.

  12. Na guia Validação, verifique advertências ou erros que possam causar falha no fluxo de dados.
Alterando o tipo de dados de um grupo de atributos

Você pode usar o operador de Expressão para alterar o tipo de dados de atributos usando uma ação de transformação em massa.

Em vez de usar uma função CAST para alterar um atributo de tipo de dados de atributo, um de cada vez, você pode adicionar o operador de Expressão e aplicar uma ação de transformação em massa em vários atributos ao mesmo tempo.
  1. Conecte o operador de expressão ao objeto de entrada apropriado.
  2. Com o operador de expressão em foco na tela, na guia Atributos do painel Propriedades, selecione para exibir os atributos de entrada (linkados ao operador de expressão no lado esquerdo).
  3. Se você tiver alguns atributos a serem transformados, use as caixas de seleção para selecionar os atributos que deseja transformar.
  4. Se você tiver muitos atributos para transformação, aplique um filtro nos atributos:
    1. Selecione o ícone de filtro na coluna Nome. No campo do filtro exibido, informe um padrão de regex simples usando curingas (? e *) para filtrar os atributos por um padrão de nome Por exemplo, digite ADD* para corresponder aos atributos ADDRESS1, ADDRESS2 e ADDRESS_KEY.
    2. Selecione o ícone de filtro na coluna Tipo. No menu exibido, selecione o tipo de atributo atual dos atributos que você deseja alterar a exibição. Por exemplo, suponha que o tipo de ADDRESS1 e ADDRESS2 seja VARCHAR e o tipo de ADDRESS_KEY seja NUMERIC. Você pode selecionar VARCHAR para transformar somente ADDRESS1 e ADDRESS2.
  5. No menu Ações, selecione Alterar tipo de dados.
  6. Na caixa de diálogo Alterar tipo de dados, selecione o novo Tipo de dados para os atributos selecionados ou os atributos aplicados por filtro.

    Em seguida, especifique quaisquer outras propriedades aplicáveis ao novo tipo de dados selecionado.

    Para manter os atributos originais no conjunto de dados, selecione Manter atributos de origem. Se a caixa de seleção não for marcada, somente os novos atributos estarão disponíveis nos dados resultantes.

  7. Selecione Aplicar.
  8. Selecione a guia Detalhes.
    Verifique a expressão adicionada ao operador para você.
Adicionando uma expressão

Use o Expression Builder para selecionar visualmente os elementos para criar uma expressão no editor. Você mesmo também pode criar uma expressão manualmente.

Anote o seguinte ao criar expressões:

  • Coloque um literal de string entre aspas simples. Por exemplo: CONCAT('We ', 'like') e UPPER('oracle').

  • Coloque um nome de atributo entre aspas duplas. Por exemplo: UPPER("Sales") e CONCAT(CONCAT("EXPRESSION_1.EMP_UTF8_EN_COL_CSV.EN_NAME", ' '), "EXPRESSION_1.EMP_UTF8_EN_COL_CSV.NAME").

    O uso de aspas duplas nos nomes dos atributos é obrigatório para caracteres multibyte e nomes que têm caracteres especiais no nome totalmente qualificado.

O painel Adicionar Expressão tem duas seções: Informações da expressão e Construtor de expressões. Os campos Informações da expressão permitem especificar um nome e um tipo de dados para a expressão. Você também pode criar a expressão para ser aplicada a dois ou mais atributos. Ao trabalhar com tipos de dados complexos, como Map, Array e Struct, que podem ter níveis de tipos aninhados, você poderá optar por permitir que o construtor detecte o tipo de dados da expressão que você informar. Quando você deixa o construtor inferir o tipo de dados, é possível visualizar e atualizar o tipo de dados e validar a expressão.

A seção Construtor de expressões lista os elementos para criar uma expressão. Os elementos que podem ser usados em uma expressão incluem atributos de entrada, parâmetros e funções. Clique duas vezes ou arraste um elemento da lista para adicionar ao editor para criar a expressão ou crie-a você mesmo manualmente. Você pode validar a expressão antes de criá-la.

Entrada exibe os atributos do operador de upstream que estão vindo para esse operador de expressão. Abaixo da lista de atributos, há uma caixa de seleção que permite aplicar regras de Exclusão. Para excluir um ou mais atributos de entrada da saída dessa expressão, marque a caixa de seleção Excluir atributos de entrada. Em seguida, use o menu para adicionar os atributos de entrada que você deseja excluir da saída. Uma regra de Exclusão é aplicada a cada atributo selecionado para exclusão. Você só pode excluir atributos quando estiver adicionando a expressão pela primeira vez. Quando você edita a expressão, a caixa de seleção Excluir atributos de entrada fica indisponível.

Os Parâmetros incluem parâmetros definidos pelo usuário e gerados pelo sistema.

Os parâmetros definidos pelo usuário são os parâmetros de expressão que foram adicionados ao fluxo de dados usando o Condition Builder (operadores de filtro, junção, lookup e divisão) ou o Expression Builder (operadores de expressão e agregação). Consulte Adicionando um Parâmetro de Expressão. A sintaxe é $PARAMETER_NAME. Por exemplo: EXPRESSION_1.ADDRESSES.POSTAL_CODE=$P_CODE

O Data Integration gera parâmetros do sistema, como SYS.TASK_START_TIME. Os valores dos parâmetros do sistema podem ser usados em expressões para registrar informações do sistema. A sintaxe é ${SYSTEM_PARAMETER}. Por exemplo: ${SYS.TASK_RUN_NAME}

Funções são aquelas disponíveis no serviço Data Integration que você pode usar em uma expressão. Funções são operações executadas em argumentos transmitidos à função. As funções calculam, manipulam ou extraem valores de dados de argumentos. Você também pode adicionar funções definidas pelo usuário criadas no espaço de trabalho. Por exemplo: MYLIBRARY.MYFUNCTION

Esta é a lista de funções disponíveis no Data Integration a serem usadas:

Funções de Hash
FunçãoDescriçãoExemplo
MD5(all data types)Calcula uma soma de verificação MD5 do tipo de dados e retorna um valor de string. MD5(column_name)
SHA1(all data types)Calcula um valor de hash SHA-1 do tipo de dados e retorna um valor de string. SHA1(column_name)
SHA2(all data types, bitLength)Calcula um valor de hash SHA-2 do tipo de dados e retorna um valor de string. bitLengthé um número inteiro. SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512).
ORA_HASH(expr, [max_bucket], [seed_value])

Calcula um valor de hash para expr e retorna um valor NUMBER.

expr pode ser uma expressão, uma coluna, um literal.

max_bucket é o valor máximo de bucket retornado, entre 0 e 4294967295 (padrão).

seed_value é um valor entre 0 (padrão) e 4294967295.

A Oracle aplica a função hash à combinação de expr e seed_value para produzir muitos resultados diferentes para o mesmo conjunto de dados.

ORA_HASH('1')

ORA_HASH('b', 2)

ORA_HASH(100, 10, 10)

ORA_HASH(EXPRESSION_1.CUSTOMERS.SSN, 2)

Funções Aritméticas
FunçãoDescriçãoExemplo
ABS(numeric)Retorna a potência absoluta do valor numeric.ABS(-1)
CEIL(numeric)Retorna o menor inteiro não maior que o valor numericCEIL(-1,2)
FLOOR(numeric)Retorna o maior inteiro não maior que o valor numeric.FLOOR(-1,2)
MOD(numeric1, numeric2)Retorna o resto depois que numeric1 é dividido por numeric2.MOD(8,2)
POWER(numeric1, numeric2)Eleva numeric1 à potência de numeric2.POWER(2,3)
ROUND(numeric1, numeric2)Retorna numeric1 arredondado para numeric2 casas decimais.ROUND(2.5,0)
TRUNC(numeric1, numeric2)Retorna numeric1 truncado em numeric2 casas decimais.TRUNC(2.5,0)
TO_NUMBER(expr[, format, locale])Converte um expr em um número, com base em format e em locale opcional fornecidos. A configuração regional padrão é en-US. Tags de idioma suportadas.

Padrões de formato suportados:

  • 0: Um dígito
  • #: Um dígito, zero mostra como ausente
  • .: Espaço reservado para separador decimal
  • ,: Espaço reservado para separador de agrupamento
  • E: Separa mantissa e expoente para formatos exponenciais
  • -: Prefixo negativo padrão
  • ¤: Sinal de moeda; substituído pelo símbolo de moeda; se duplo, substituído pelo símbolo de moeda internacional; se presente em um padrão, o separador decimal monetário é usado no lugar do separador decimal

TO_NUMBER('5467.12') returns retorna 5467.12

TO_NUMBER('-USD45,677.7', '¤¤##,###.#', 'en-US') retorna -45677.7

Funções de Array

Somente o operador de Expressão suporta funções de matriz.

FunçãoDescriçãoExemplo
ARRAY_POSITION(array(...), element)Retorna a posição da primeira ocorrência do elemento fornecido no array fornecido.

A posição não é baseada em zero, em vez disso, começa com 1.

ARRAY_POSITION(array(3, 2, 1, 4, 1), 1) retorna 3
REVERSE(array(...)) Retorna a matriz fornecida de elementos em uma ordem inversa. REVERSE(array(2, 1, 4, 3)) retorna [3,4,1,2]
ELEMENT_AT(array(...), index) Retorna o elemento do array fornecido na posição de índice fornecida.

O índice não é baseado em zero, em vez disso, começa com 1.

Se index = -1, ele retornará o último elemento.

ELEMENT_AT(array(1, 2, 3), 2) retorna 2
Funções de Date e Hora
Função Descrição Exemplo
CURRENT_DATE Retorna a data atual. CURRENT_DATEretorna a data de hoje, como 2023-05-26
CURRENT_TIMESTAMP Retorna a data e hora atuais do fuso horário da sessão. CURRENT_TIMESTAMP retorna a data e a hora atuais de hoje, como 2023-05-26 12:34:56
DATE_ADD(date, number_of_days) Retorna a data que é o number especificado de dias após o date especificado. DATE_ADD('2017-07-30', 1) retorna 2017-07-31
DATE_FORMAT(expr, format[, locale])

Formata uma expr de Data, com base no format e no locale opcional fornecidos. A configuração regional padrão é en-US. Tags de idioma suportadas.

Padrões de formato de data suportados:

  • yy: ano com dois dígitos
  • yyyy: ano com quatro dígitos
  • M: Mês numérico, como 1 para janeiro
  • MM: Mês numérico, como 01 para janeiro
  • MMM: Mês resumido, como Jan
  • MMMMMM: Mês completo, como Janeiro
  • d: Dia numérico do mês, como 1 para 1 de junho
  • dd: Dia numérico do mês, como 01 para 1 de junho
  • DDD: Dia numérico do ano de 001 a 366, como 002 para 2 de janeiro
  • F: Dia numérico da semana em um mês, como 3 para a 3a segunda-feira de junho.
  • EEE ou E: Dia nomeado abreviado da semana, como Dom para domingo
  • EEEE: Dia da semana nomeado, como Domingo
  • HHH: formato de 24 horas de 00 a 23
  • H: formato de 0 a 23 horas
  • hh: formato de 12 horas de 01 a 12
  • h: formato de 12 horas de 1 a 12
  • mm: minutos de 00 a 59
  • ss: segundos de 00 a 59
  • SSS: milissegundos de 000 a 999
  • a: AM ou PM
  • z: fuso horário, como PDT

DATE_FORMAT(Date '2020-10-11', 'yyyy-MM-dd') retorna '2020-10-11'. O primeiro argumento é um objeto Date representando 11 de outubro de 2020.

DATE_FORMAT(Date '2018-junio-17', 'yyyy/MMMM/dd', 'es-ES') retorna '2018/junio/17'

DAYOFMONTH(date) Retorna o dia da data no mês. DAYOFMONTH('2020-12-25') retorna 25
DAYOFWEEK(date) Retorna o dia da data na semana. DAYOFWEEK('2020-12-25') retorna 6 para sexta-feira. Nos Estados Unidos, o domingo é considerado 1, a segunda-feira é 2 e assim por diante.
DAYOFYEAR(date) Retorna o dia da data no ano. DAYOFYEAR('2020-12-25') retorna 360
WEEKOFYEAR(date) Retorna a semana da data no ano.

WEEKOFYEAR('2022-07-28') retorna 30

WEEKOFYEAR('2022-07-28 13:24:30') retorna 30

HOUR(datetime) Retorna o valor da hora da data/hora. HOUR('2020-12-25 15:10:30') retorna 15
LAST_DAY(date) Retorna o último dia do mês da data. LAST_DAY('2020-12-25') retorna 31
MINUTE(datetime) Retorna o valor do minuto da data e hora. HOUR('2020-12-25 15:10:30') retorna 10
MONTH(date) Retorna o valor do mês da data. MONTH('2020-06-25') retorna 6
QUARTER(date) Retorna o trimestre do ano em que a data está. QUARTER('2020-12-25') retorna 4
SECOND(datetime) Retorna o valor de segundo da data e hora. SECOND('2020-12-25 15:10:30') retorna 30
TO_DATE(string, format_string[, localeStr]) Faz parsing da expressão de string com a expressão format_string para uma data. A configuração regional é opcional. O padrão é en-US. Tags de idioma suportadas.

Nas expressões do pipeline, format_string deve usar os códigos de formato strftime. Caso contrário, as strings de formato com distinção entre maiúscula/minúscula suportadas serão:

  • yy: ano com dois dígitos
  • yyyy: ano com quatro dígitos
  • M: Mês numérico, como 1 para janeiro
  • MM: Mês numérico, como 01 para janeiro
  • MMM: Mês resumido, como Jan
  • MMMMMM: Mês completo, como Janeiro
  • d: Dia numérico do mês, como 1 para 1 de junho
  • dd: Dia numérico do mês, como 01 para 1 de junho
  • DDD: Dia numérico do ano de 001 a 366, como 002 para 2 de janeiro
  • F: Dia numérico da semana em um mês, como 3 para a 3a segunda-feira de junho.
  • EEE ou E: Dia nomeado abreviado da semana, como Dom para domingo
  • EEEE: Dia da semana nomeado, como Domingo
  • HHH: formato de 24 horas de 00 a 23
  • H: formato de 0 a 23 horas
  • hh: formato de 12 horas de 01 a 12
  • h: formato de 12 horas de 1 a 12
  • mm: minutos de 00 a 59
  • ss: segundos de 00 a 59
  • SSS: milissegundos de 000 a 999
  • a: AM ou PM
  • z: fuso horário, como PDT

TO_DATE('31 December 2016', 'dd MMMM yyyy') retorna um valor de Data igual a 2016-12-31

TO_DATE('2018/junio/17', 'yyyy/MMMM/dd', 'es-ES') retorna um valor de Data igual a 2018-06-17

TO_TIMESTAMP(expr, format_string[, localeStr]) Converte um expr de VARCHAR em um valor de TIMESTAMP, com base no valor format_string e no valor localeStr opcional fornecidos.

Nas expressões do pipeline, format_string deve usar os códigos de formato strftime. Caso contrário, os padrões de formato suportados serão:

  • yy: ano com dois dígitos
  • yyyy: ano com quatro dígitos
  • M: Mês numérico, como 1 para janeiro
  • MM: Mês numérico, como 01 para janeiro
  • MMM: Mês resumido, como Jan
  • MMMMMM: Mês completo, como Janeiro
  • d: Dia numérico do mês, como 1 para 1 de junho
  • dd: Dia numérico do mês, como 01 para 1 de junho
  • DDD: Dia numérico do ano de 001 a 366, como 002 para 2 de janeiro
  • F: Dia numérico da semana em um mês, como 3 para a 3a segunda-feira de junho.
  • EEE ou E: Dia nomeado abreviado da semana, como Dom para domingo
  • EEEE: Dia da semana nomeado, como Domingo
  • HHH: formato de 24 horas de 00 a 23
  • H: formato de 0 a 23 horas
  • hh: formato de 12 horas de 01 a 12
  • h: formato de 12 horas de 1 a 12
  • mm: minutos de 00 a 59
  • ss: segundos de 00 a 59
  • SSS: milissegundos de 000 a 999
  • a: AM ou PM
  • z: fuso horário, como PDT
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') retorna um objeto TIMESTAMP que representa 11am 10:10 Oct 11th, 2020
WEEK(date)

Retorna o valor da semana da data.

WEEK('2020-06-25') retorna 4
YEAR(date) Retorna o valor do ano da data. YEAR('2020-06-25') retorna 2020
ADD_MONTHS(date_expr, number_months) Retorna a data após a adição do número especificado de meses à data, timestamp ou string especificada com um formato yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS.

ADD_MONTHS('2017-07-30', 1) retorna 2017-08-30

ADD_MONTHS('2017-07-30 09:07:21', 1) retorna 2017-08-30

MONTHS_BETWEEN(start_date_expr, end_date_expr)

Retorna o número de meses entre start_date_expr e end_date_expr. start_date_expr e end_date_expr podem ser uma data, um timestamp ou uma string com um formato yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Um número inteiro será retornado se as duas datas forem o mesmo dia do mês ou se ambas forem o último dia em seus respectivos meses. Caso contrário, a diferença será calculada com base em 31 dias por mês.

MONTHS_BETWEEN('2022-01-01', '2022-01-31') retorna 1

MONTHS_BETWEEN('2022-07-28', '2020-07-25') retorna 24

MONTHS_BETWEEN('2022-07-28 13:24:30', '2020-07-25 13:24:30') retorna 24

FROM_UTC_TIMESTAMP(time_stamp, time_zone)

Interpreta uma data, um timestamp ou uma string como horário UTC e converte esse horário em um timestamp no fuso horário especificado.

Para string, use um formato como: yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

O formato de fuso horário é um ID de zona baseado em região (por exemplo, 'área/cidade', como 'Asia/Seoul', ou um deslocamento de fuso horário (por exemplo, UTC+02).

FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') retorna 2017-07-14 03:40:00.0
TO_UTC_TIMESTAMP(time_stamp, time_zone)

Converte uma data, um timestamp ou uma string no fuso horário especificado em um timestamp UTC.

Para string, use um formato como: yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

O formato de fuso horário é um ID de zona baseado em região (por exemplo, 'área/cidade', como 'Asia/Seoul'), ou um deslocamento de fuso horário (por exemplo, UTC+02).

TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') retorna 2017-07-14 01:40:00.0
FROM_UNIXTIME(unix_time[, fmt])

Converte a época ou o horário especificado do Unix em uma string que representa o timestamp desse momento no fuso horário do sistema atual e no formato especificado.

Observação: O horário do Unix é o número de segundos decorridos desde 1o de janeiro de 1970 00:00:00 UTC.

Se fmt for omitido, o formato padrão será yyyy-MM-dd HH:mm:ss

FROM_UNIXTIME(1255033470) retorna '2009-10-08 13:24:30'

FROM_UNIXTIME(1637258854) retorna '2021-11-18 10:07:34'

O fuso horário padrão é PST nos exemplos

UNIX_TIMESTAMP([time_expr[, fmt]])

Converte o horário atual ou especificado em um timestamp do Unix em segundos.

time_expr é uma data, um timestamp ou uma string com um formato yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Se time_expr não for informado, o horário atual será convertido.

Se time_expr for uma string e fmt for omitido, o padrão será yyyy-MM-dd HH:mm:ss

UNIX_TIMESTAMP('1970-01-01 00:00:00', 'yyyy-MM-dd HH:mm:ss') retorna 28800

O fuso horário padrão é PST neste exemplo

INTERVAL 'year' YEAR[(year_precision)]

Retorna um período em anos.

year_precision é o número de dígitos no campo year; ele varia de 0 a 9. Se year_precision for omitido, o padrão será 2 (deve ser menor que 100 anos).

INTERVAL '1' YEAR retorna um intervalo de 1 ano

INTERVAL '200' YEAR(3) retorna um intervalo de 200 anos

INTERVAL 'year month' YEAR[(year_precision)] TO MONTH

Retorna um período em anos e meses. Use para armazenar um período usando os campos year e month.

year_precision é o número de dígitos no campo year; ele varia de 0 a 9. Se year_precision for omitido, o padrão será 2 (deve ser menor que 100 anos).

INTERVAL '100-5' YEAR(3) TO MONTH retorna um intervalo de 100 anos e 5 meses. Especifique a precisão do ano principal de 3.
INTERVAL 'month' MONTH[(month_precision)]

Retorna um período em meses.

month_precision é o número de dígitos no campo mês; ele varia de 0 a 9. Se month_precision for omitido, o padrão será 2 (deve ser menor que 100 anos).

INTERVAL '200' MONTH(3) retorna um intervalo de 200 meses. Especifique a precisão do mês de 3.
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)]

Retorna um período em termos de dias, horas, minutos e segundos.

day_precision é o número de dígitos no campo day; ele varia de 0 a 9. O padrão é 2.

fractional_seconds_precision é o número de dígitos na parte fracionária do valor do segundo no campo time; ele varia de 0 a 9.

INTERVAL '11 10:09:08.555' DAY TO SECOND(3) retorna um intervalo de 11 dias, 10 horas, 09 minutos, 08 segundos e 555 milésimos de segundo
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)]

Retorna um período em termos de dias, horas e minutos.

day_precision é o número de dígitos no campo day; ele varia de 0 a 9. O padrão é 2.

minute_precision é o número de dígitos no campo minute; ele varia de 0 a 2. O padrão é 2.

INTERVAL '11 10:09' DAY TO MINUTE retorna um intervalo de 11 dias, 10 horas e 09 minutos
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)]

Retorna um período em termos de dias e horas.

day_precision é o número de dígitos no campo day; ele varia de 0 a 9. O padrão é 2.

hour_precision é o número de dígitos no campo hora; ele varia de 0 a 2. O padrão é 2.

INTERVAL '100 10' DAY(3) TO HOUR retorna um intervalo de 100 dias e 10 horas
INTERVAL 'day' DAY[(day_precision)]

Retorna um período em termos de dias.

day_precision é o número de dígitos no campo day; ele varia de 0 a 9. O padrão é 2.

INTERVAL '999' DAY(3) retorna um intervalo de 999 dias
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)]

Retorna um período em termos de horas, minutos e segundos.

hour_precision é o número de dígitos no campo hora; ele varia de 0 a 2. O padrão é 2.

fractional_seconds_precision é o número de dígitos na parte fracionária do valor do segundo no campo time; ele varia de 0 a 9.

INTERVAL '09:08:07.6666666' HOUR TO SECOND(7) retorna um intervalo de 9 horas, 08 minutos e 7.6666666 segundos
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)]

Retorna um período em termos de horas e minutos.

hour_precision é o número de dígitos no campo hora; ele varia de 0 a 2. O padrão é 2.

minute_precision é o número de dígitos no campo minute; ele varia de 0 a 2. O padrão é 2.

INTERVAL '09:30' HOUR TO MINUTE retorna um intervalo de 9 horas e 30 minutos
INTERVAL 'hour' HOUR[(hour_precision)]

Retorna um período em termos de horas.

hour_precision é o número de dígitos no campo hora; ele varia de 0 a 2. O padrão é 2.

INTERVAL '40' HOUR retorna um intervalo de 40 horas
INTERVAL 'minute' MINUTE[(minute_precision)]

Retorna um período em termos de minutos.

minute_precision é o número de dígitos no campo minute; ele varia de 0 a 2. O padrão é 2.

INTERVAL '15' MINUTE retorna um intervalo de 15 minutos
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)]

Retorna um período em termos de minutos e segundos.

minute_precision é o número de dígitos no campo minute; ele varia de 0 a 2. O padrão é 2.

fractional_seconds_precision é o número de dígitos na parte fracionária do valor do segundo no campo time; ele varia de 0 a 9.

INTERVAL '15:30' MINUTE TO SECOND retorna um intervalo de 15 minutos e 30 segundos
INTERVAL 'second' SECOND[(fractional_seconds_precision)]

Retorna um período em termos de segundos.

fractional_seconds_precision é o número de dígitos na parte fracional do campo segundo; ele varia de 0 a 9. O padrão é 3.

INTERVAL '15.678' SECOND retorna um intervalo de 15,678 segundos
Funções Analíticas
Função Descrição Exemplo
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) Retorna o valor avaliado na linha que é a primeira do quadro da janela. FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) retorna o primeiro valor BANK_ID em uma janela na qual as linhas são calculadas como linha atual e 1 linha após essa linha, particionadas por BANK_ID e em ordem crescente de BANK_NAME.
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) Retorna o valor avaliado na linha em um determinado deslocamento antes da linha atual dentro da partição. Se não houver essa linha, o valor padrão será retornado. O deslocamento e o padrão são avaliados em relação à linha atual. Se omitido, o desvio é padronizado como 1 e o padrão é NULL. LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) retorna o valor BANK_ID da segunda linha antes da linha atual, particionada por BANK_ID e em ordem decrescente de BANK_NAME. Se não houver esse valor, hello será retornado.
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) Retorna o valor avaliado na linha que é a última do quadro da janela. LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) retorna o último valor BANK_ID em uma janela na qual as linhas são calculadas como a linha atual e 1 linha após essa linha, particionada por BANK_ID e em ordem crescente de BANK_NAME.
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) Retorna o valor avaliado na linha em um determinado deslocamento após a linha atual dentro da partição. Se não houver essa linha, o valor padrão será retornado. O deslocamento e o padrão são avaliados em relação à linha atual. Se omitido, o desvio é padronizado como 1 e o padrão é NULL. LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retorna o valor BANK_ID da segunda linha após a linha atual, particionada por BANK_ID e em ordem crescente de BANK_NAME. Se não houver esse valor, hello será retornado.
RANK() OVER([ partition_clause ] order_by_clause) Retorna a classificação da linha atual com lacunas, contando a partir de 1. RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retorna a classificação de cada linha dentro do grupo de partições de BANK_ID, em ordem crescente de BANK_NAME.
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) Retorna o número exclusivo da linha atual dentro de sua partição, contando a partir de 1. ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retorna o número de linha exclusivo de cada linha dentro do grupo de partições de BANK_ID, em ordem crescente de BANK_NAME.
Funções da String
FunçõesDescriçãoExemplo
CAST(value AS type)Retorna o valor especificado no tipo especificado.CAST("10" AS INT) retorna 10
CONCAT(string, string)Retorna os valores combinados de strings ou colunas.CONCAT('Oracle','SQL') retorna OracleSQL
CONCAT_WS(separator, expression1, expression2, expression3,...) Retorna os valores combinados de strings ou colunas usando o separador especificado entre as strings ou colunas.

Um separador é obrigatório e deve ser uma string.

Pelo menos uma expressão deve ser fornecida após o separador. Por exemplo: CONCAT_WS(',' col1)

CONCAT_WS('-', 'Hello', 'Oracle') retorna Hello-Oracle

CONCAT_WS(' ', address, city, postal_code) retorna 123 MyCity 987654

Se um filho da função for um array, o array será nivelado:

CONCAT_WS(',', 1,2,3, to_array(4,5,6), to_array(7,8), 9) retorna 1,2,3,4,5,6,7,8,9

INITCAP(string)Retorna a string com a primeira letra de cada palavra em maiúscula, enquanto todas as outras letras ficam em minúsculas e cada palavra é delimitada por um espaço em branco.INITCAP('oRACLE sql') retorna Oracle Sql
INSTR(string, substring[start_position])Retorna o índice (baseado em 1) da primeira ocorrência de substring em string.INSTR('OracleSQL', 'SQL') retorna 7
LOWER(string)Retorna a string com todas as letras alteradas para minúsculas.LOWER('ORACLE') retorna oracle
LENGTH(string)Retorna o tamanho do caractere da string ou o número de bytes de dados binários. O tamanho da string inclui espaços à direita.LENGTH('Oracle') retorna 6
LTRIM(string)Retorna a string com espaços à esquerda removidos.LTRIM(' Oracle')
NVL(expr1, epxr2)Retorna o argumento que não é nulo.NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID())
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx])Pesquisa e extrai a string que corresponde a um padrão de expressão regular da string de entrada. Se o índice do grupo de captura opcional for informado, a função extrairá o grupo específico.

REGEXP_SUBSTR('https://www.oracle.com/products', 'https://([[:alnum:]]+\.?){3,4}/?') retorna https://www.oracle.com

REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) retorna 22
REPLACE(string, search, replacement)Substitui todas as ocorrências de search por replacement.

Se search não for encontrado na string, ela será retornada inalterada.

Se replacement não for especificado ou for uma string vazia, nada substituirá search que é removido de string.

REPLACE('ABCabc', 'abc', 'DEF') retorna ABCDEF
RTRIM(string)Retorna a string com espaços à esquerda removidos da direita.RTRIM('Oracle ')
SUBSTRING(string, position[, substring_length])Retorna a substring que começa na posição. SUBSTRING('Oracle SQL' FROM 2 FOR 3) returns rac
Para números, TO_CHAR(expr) e datas TO_CHAR(expr, format[, locale])Converte números e datas em strings. Para números, nenhum formato é necessário. Para datas, use o mesmo formato que DATE_FORMAT descrito em Funções de Data e Hora. A configuração regional padrão é en-US. Consulte tags de idioma suportadas.

Nas expressões do pipeline, format_string deve usar os códigos de formato strftime. Caso contrário, os padrões de formato de data suportados são:

  • yy: ano com dois dígitos
  • yyyy: ano com quatro dígitos
  • M: Mês numérico, como 1 para janeiro
  • MM: Mês numérico, como 01 para janeiro
  • MMM: Mês resumido, como Jan
  • MMMMMM: Mês completo, como Janeiro
  • d: Dia numérico do mês, como 1 para 1 de junho
  • dd: Dia numérico do mês, como 01 para 1 de junho
  • DDD: Dia numérico do ano de 001 a 366, como 002 para 2 de janeiro
  • F: Dia numérico da semana em um mês, como 3 para a 3a segunda-feira de junho.
  • EEE ou E: Dia nomeado abreviado da semana, como Dom para domingo
  • EEEE: Dia da semana nomeado, como Domingo
  • HHH: formato de 24 horas de 00 a 23
  • H: formato de 0 a 23 horas
  • hh: formato de 12 horas de 01 a 12
  • h: formato de 12 horas de 1 a 12
  • mm: minutos de 00 a 59
  • ss: segundos de 00 a 59
  • SSS: milissegundos de 000 a 999
  • a: AM ou PM
  • z: fuso horário, como PDT

Exemplo de número: TO_CHAR(123) retorna 123

Exemplo de data: TO_CHAR(Date '2020-10-30', 'yyyy.MM.dd', 'en-US') retorna a string 2020.10.30. O primeiro argumento é um objeto Date representando 30 de outubro de 2020.

UPPER(string)Retorna uma string com todas as letras alteradas para maiúsculas.UPPER('oracle') retorna ORACLE
LPAD(str, len[, pad])Retorna uma string preenchida à esquerda com caracteres especificados para um determinado tamanho. Se o caractere pad for omitido, o padrão será um espaço.LPAD('ABC', 5, '*') retorna '**ABC'
RPAD(str, len[, pad])Retorna uma string preenchida à direita com caracteres especificados para um determinado tamanho. Se o caractere pad for omitido, o padrão será um espaço.RPAD('XYZ', 6, '+' ) returns 'XYZ+++'
Funções do Operador (Comparação)
FunçãoDescriçãoExemplo
CASE WHEN condition1 THEN result1 ELSE result2 ENDRetorna o valor cuja condição é atendida.CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END retorna ABC se 1> 0; caso contrário, retorna XYZ
ANDO operador lógico AND. Retorna verdadeiro se os dois operandos forem verdadeiros; caso contrário, retorna falso.(x = 10 AND y = 20) retorna "true" se x for igual a 10 e y for igual a 20. Se um dos dois não for verdadeiro, retornará "false"
ORO operador lógico OR. Retorna verdadeiro se um operando for verdadeiro ou ambos forem verdadeiros; caso contrário, retorna falso.(x = 10 OR y = 20) retorna "false" se x não for igual a 10 e também y não for igual a 20. Se um for verdadeiro, retornará "true"
NOTO operador lógico NOT.
LIKEExecuta correspondência de padrão de string, se string1 corresponder ao padrão em string2.
=Verifica a igualdade. Retorna verdadeiro se expr1 for igual a expr2; caso contrário, retorna falso.x = 10 retorna "true" quando o valor de x é 10, caso contrário, retorna "false"
!=Verifica a desigualdade. Retorna verdadeiro se expr1 não for igual a expr2; caso contrário, retorna falso.x != 10 retorna "false" se o valor de x for 10, caso contrário, retorna "true"
>Verifica uma expressão maior que. Retorna verdadeiro se expr1 for maior que expr2.x > 10 retorna "true" se o valor de x for maior que 10, caso contrário, retorna "false"
>=Testa uma expressão maior que ou igual a. Retorna verdadeiro se expr1 for maior ou igual a expr2.x > =10 retorna "true" se o valor de x for maior ou igual a 10, caso contrário, retorna "false"
<Testa uma expressão menor que. Retorna verdadeiro se expr1 for menor que expr2.x < 10 retorna "true" se o valor de x for menor que 10, caso contrário, retornará "false"
<=Testa uma expressão menor que ou igual a. Retorna verdadeiro se expr1 for menor ou igual a expr2.x <= 10 retorna "true" se o valor de x for menor que 10, caso contrário, retorna "false"
||Concatena duas strings.'XYZ' || 'hello' retorna 'XYZhello'
BETWEENAvalia um intervalo.FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007
INTesta se uma expressão corresponde a uma lista de valores.FILTER_2.ORDERS.ORDER_ID IN (1003, 1007)
Funções de ID Exclusivo
FunçãoDescriçãoExemplo
NUMERIC_ID()Gera um identificador exclusivo universal que é um número de 64 bits para cada linha.NUMERIC_ID() retorna, por exemplo, 3458761969522180096 e 3458762008176885761
ROWID()Gera números monotonicamente crescentes de 64 bits.ROWID() retorna, por exemplo, 0, 1, 2 e assim por diante
UUID()Gera um identificador exclusivo universal que é uma String de 128 bit para cada linha.UUID() retorna, por exemplo, 20d45c2f-0d56-4356-8910-162f4f40fb6d
MONOTONICALLY_INCREASING_ID() Gera inteiros exclusivos e monotonicamente crescentes de 64 bits que são números não consecutivos. MONOTONICALLY_INCREASING_ID() retorna, por exemplo, 8589934592 e 25769803776
Funções Condicionais
FunçãoDescriçãoExemplo
COALESCE(value, value [, value]*)Retorna o primeiro argumento não nulo, se ele existir; caso contrário, retorna um nulo.COALESCE(NULL, 1, NULL) retorna 1
NULLIF(value, value)Retorna nulo se os dois valores forem iguais, caso contrário, retorna o primeiro valor.NULLIF('ABC','XYZ') retorna ABC
Funções Hierárquicas
FunçãoDescriçãoExemplo
SCHEMA_OF_JSON(string)Faz parsing de uma string JSON e infere o esquema no formato DDL.

SCHEMA_OF_JSON('[{\"Zipcode\":704,\"ZipCodeType\":\"STANDARD\",\"City\":\"ORACLECITY\",\"State\":\"OC\"}]') retorna 'ARRAY<STRUCT<City:string,State:string,ZipCodeType:string,Zipcode:bigint>>'

SCHEMA_OF_JSON('[{\"col\":0}]') retorna 'ARRAY<STRUCT<col: BIGINT>>'

FROM_JSON(column, string)

Faz parsing de uma coluna que contém uma string JSON em um dos tipos a seguir, com o esquema especificado.

  • Map, com String como tipo de chave
  • Struct
  • Array

FROM_JSON('{\"Zipcode\":704,\"City\":\"ORACLE CITY\"}', 'STRUCT<Zipcode: BIGINT, City: STRING>') retorna uma coluna de tipo Struct com o esquema especificado: {704, ORACLE CITY}

FROM_JSON('{\"a\":1, \"b\":0.8}', 'STRUCT<a: BIGINT, b: DOUBLE>') retorna uma coluna de tipo Struct com o esquema especificado: {1, 0.8}

TO_JSON(column)Converte uma coluna que contém um tipo Struct ou Array de Structs ou um tipo Map ou Array de Map em uma string JSON.TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) retorna uma string JSON {"s1":[1,2,3],"s2":{"key":"value"}}
TO_MAP(string,column[,string,column]*)Cria uma nova coluna do tipo Map. As colunas de entrada devem ser agrupadas como pares de chave/valor. As colunas de chave de entrada não podem ser nulas e devem ter todas o mesmo tipo de dados. As colunas de valor de entrada devem todas ter o mesmo tipo de dados.

TO_MAP('Ename',Expression_1.attribute1) retorna uma coluna de tipo Map: {"ENAME" -> 100}

TO_MAP('block', EXPRESSION_1.MYSOURCE.address.block, 'unit', EXPRESSION_1.MYSOURCE.address.unit) retorna uma coluna de tipo Map: {"block" -> 1,"unit" -> 1}

TO_STRUCT(string,column[,string,column]*)Cria uma nova coluna do tipo Struct. As colunas de entrada devem ser agrupadas como pares de chave/valor.

TO_STRUCT('Ename',Expression_1.attribute1) retorna {100}

TO_STRUCT('Id',Expression_1.attribute1, 'Name', Expression_1.attribute2) retorna {100, "John"}

TO_ARRAY(column[,column]*)Cria uma nova coluna como tipo Array. As colunas de entrada devem todas ter o mesmo tipo de dados.

TO_Array(Expression_1.attribute1) retorna [100]

TO_ARRAY(EXPRESSION_1.attribute2,EXPRESSION_1.attribute3) retorna ["John","Friend"]

Funções de Ordem Superior

Os operadores de fluxo de dados que suportam a criação de expressões e tipos de dados hierárquicos podem usar funções de ordem superior.

Estes são os operadores suportados:

  • Agregado

  • Expressão

  • Filtro

  • Associar

  • Lookup

  • Divisão

  • Deslocar

FunçãoDescriçãoExemplo
TRANSFORM(column, lambda_function)Recebe uma matriz e uma função anônima e configura uma nova matriz aplicando a função a cada elemento e atribuindo o resultado à matriz de saída.Para um array de entrada de inteiros [1, 2, 3], TRANSFORM(array, x -> x + 1) retorna um novo array de [2, 3, 4].
TRANSFORM_KEYS(column, lambda_function)Usa um mapa e uma função com 2 argumentos (chave e valor) e retorna um mapa no qual as chaves têm o tipo do resultado da função lambda, e os valores têm o tipo dos valores de mapa da coluna.Para um mapa de entrada com chaves inteiras e valores de string {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'}, TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) retorna um novo mapa de {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'}.
TRANSFORM_VALUES(column, lambda_function)Usa um mapa e uma função com 2 argumentos (chave e valor) e retorna um mapa no qual os valores têm o tipo do resultado das funções lambda, e as chaves têm o tipo das chaves de mapa de coluna. Para um mapa de entrada com chaves de string e valores de string {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'}, TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) retorna um novo mapa de {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'}.
ARRAY_SORT(array(...), lambda_function)

Somente o operador de Expressão suporta ARRAY_SORT.

Recebe uma matriz e classifica de acordo com a função fornecida que recebe 2 argumentos.

A função deve retornar -1, 0 ou 1, dependendo de o primeiro elemento ser menor que, igual a ou maior que o segundo elemento.

Se a função for omitida, a matriz será classificada em ordem crescente.

array_sort(to_array(5, 6, 1),
                   (left, right) -> CASE WHEN left < right THEN -1
                                         WHEN left > right THEN 1 ELSE 0 END)

A matriz retornada é:

[1,5,6]
Duplicando uma expressão

Você pode duplicar expressões que foram adicionadas a um operador de expressão.

  1. Na tela do fluxo de dados, selecione o operador de expressão.
  2. Na guia Detalhes do painel Propriedades, verifique a lista de expressões.
  3. Selecione Duplicar no menu Ações (Ações menu) correspondente à expressão que você deseja duplicar.
    Nenhuma caixa de diálogo de confirmação é exibida; a expressão duplicada é adicionada à lista imediatamente.
Movendo uma expressão

Você pode alterar a ordem das expressões que foram adicionadas a um operador de expressão.

  1. Na tela do fluxo de dados, selecione o operador de expressão.
  2. Na guia Detalhes do painel Propriedades, verifique a lista de expressões.
  3. Para a expressão que você deseja mover, selecione Mover para cima, Mover para baixo, Mover para início ou Mover para final no menu Ações (Ações menu).
    Somente ações de movimento relevantes estão disponíveis, dependendo da posição atual da expressão. Por exemplo, Mover para cima e Mover para início estão indisponíveis para a primeira expressão na lista.

Operador de Agregação

Use o operador agregado para executar cálculos, como soma ou contagem, em todas as linhas ou em um grupo de linhas para criar novos atributos derivados.

Adicionando e configurando um operador de agregação
  1. No painel Operadores, arraste uma Agregação para a tela.
  2. Com o operador de agregação focalizado, na guia Detalhes do painel Propriedades, digite um nome no campo Identifier ou deixe o nome como está.
  3. Em Agrupar por, selecione uma das seguintes opções:
    • Atributos: Use o menu para selecionar um ou mais atributos pelos quais agrupar.
    • Padrão: Selecione Adicionar padrão para adicionar um padrão que selecione os atributos a serem agrupados. Use um padrão de expressão regular que corresponda a dois ou mais atributos.
    Observação

    As expressões que você adiciona são executadas em cada atributo selecionado. Os atributos que continuam a downstream incluem aqueles pelos quais você agrupa, mais os atributos derivados das expressões que você adiciona.
  4. Em Expressões, selecione Adicionar expressão.
  5. No painel Adicionar Expressão, digite um nome para a expressão de agregação no campo Identifier ou deixe o nome como está.
  6. (Opcional) Para selecionar os atributos de origem, em que você deseja aplicar a operação de expressão, usando padrões de expressões regulares, selecione Permitir seleção em massa e Padrão. Por exemplo, considere que você tenha três atributos de ordem no conjunto de dados e deseja aplicar a função de operador SUM aos três. Você pode usar um padrão para selecionar esse grupo de atributos de origem.
    1. Para Atributos de origem, digite a expressão regular que corresponde a um grupo de atributos de origem em Padrão. Por exemplo, digite *ORDER para corresponder aos atributos FIRST_ORDER, LAST_ORDER e FINAL_ORDER.
    2. Em seguida, para Tipo de dados, selecione um valor no menu e preencha os campos correspondentes ao tipo selecionado.
    3. Para Atributos de destino, digite a expressão regular para definir os nomes dos atributos de destino em Padrão. Por padrão, $0 é digitado para referência aos atributos originais de origem. Atualize o padrão para nomear o atributo de destino de acordo com os requisitos. Por exemplo, digite $0_SUM para anexar o texto SUM aos nomes originais dos atributos de origem.
    4. Por padrão, Usar tipos de dados de atributo de origem é selecionado. É possível manter a seleção. Se você desmarcar a caixa de seleção Usar tipos de dados de atributo de origem, selecione um Tipo de dados e preencha os campos correspondentes ao tipo selecionado.
  7. (Opcional) Se você não selecionou Permitir seleção em massa, em Tipo de dados da expressão, poderá selecionar Inferir tipo de dados se desejar que o Expression Builder detecte o tipo de dados da expressão que você informou Você pode selecionar Preview data type e Validate para visualizar e atualizar o tipo de dados e validar a expressão.

    Deixar o construtor inferir tipo de dados é útil quando você está trabalhando com tipos de dados complexos, como Map, Array e Struct, que podem ter níveis de tipos aninhados.

  8. Se você não selecionou Permitir seleção em massa, para Tipo de dados, selecione um valor no menu e preencha os campos correspondentes de acordo com o tipo selecionado.
  9. (Opcional) Em Tipo de dados da expressão, você poderá selecionar Inferir tipo de dados se quiser que o Criador de Expressões detecte o tipo de dados da expressão informada. Você pode selecionar Preview data type e Validate para visualizar e atualizar o tipo de dados e validar a expressão.

    Deixar o construtor inferir tipo de dados é útil quando você está trabalhando com tipos de dados complexos, como Map, Array e Struct, que podem ter níveis de tipos aninhados.

  10. Se você não selecionou Permitir seleção em massa e Inferir tipo de dados, selecione um valor no menu Tipo de dados e preencha os campos correspondentes ao tipo selecionado.
  11. Na seção Construtor de expressões, construa visualmente uma expressão clicando duas vezes ou arrastando atributos, parâmetros ou funções de entrada para adicionar ao editor e criar a expressão. Ou você mesmo pode criar a expressão manualmente. Você também pode validar a expressão.

    Se você selecionou Permitir seleção em massa, use %MACRO_INPUT% na expressão para indicar os atributos nos quais a função deve ser aplicada. Por exemplo, considere que você usou o padrão *NAME para corresponder aos atributos de origem FIRST_NAME, LAST_NAME e FULL_NAME. Agora você pode especificar uma função como UPPER(%MACRO_INPUT%) para aplicar a função em todos os atributos que correspondem ao padrão.

    Para excluir um ou mais atributos de entrada da saída dessa expressão, marque a caixa de seleção Excluir atributos de entrada. Em seguida, use o menu para adicionar os atributos de entrada que você deseja excluir da saída. Uma regra de Exclusão é aplicada a cada atributo selecionado para exclusão. Você só pode excluir atributos quando estiver adicionando a expressão pela primeira vez. Quando você edita a expressão, a caixa de seleção Excluir atributos de entrada fica indisponível.

    Observação

    Para substituir um espaço reservado em uma função por outro elemento, destaque o espaço reservado e clique duas vezes em outro elemento da lista para adicioná-lo à função.
  12. Selecione Adicionar.
    Você poderá repetir as etapas a partir da etapa 4 para adicionar mais expressões, se necessário.
  13. Na guia Atributos, selecione para exibir atributos de entrada ou saída. Os atributos de entrada são vinculados ao operador no lado esquerdo. Os atributos de saída são vinculados ao operador no lado direito e vão para o operador seguinte.

    Você pode selecionar atributos individuais ou usar ícones de filtro para filtrar a lista de atributos. Em seguida, aplique as regras de exclusão em massa aos atributos selecionados ou filtrados.

    • Selecione o ícone de filtro na coluna Nome para filtrar atributos por um padrão de nome. No campo de filtro, digite uma expressão regular simples. Você pode usar os curingas ? e * no padrão regex.
    • Selecione o ícone de filtro na coluna Tipo para filtrar atributos por um tipo de dados. Use o menu para selecionar o tipo a ser usado como filtro.
      Observação

      Você só pode aplicar um filtro de padrão de nome, mas vários filtros de tipo por vez. Por exemplo, para filtrar pelo padrão de nome *_CODE e pelo tipo numérico ou varchar, você aplica um filtro de padrão de nome (*_CODE) e dois filtros de tipo (numérico, varchar).
    • Use o menu Ações para aplicar regras de exclusão em massa aos atributos selecionados ou filtrados. Selecione Excluir por seleção ou Excluir por filtro aplicado.
    • Selecione Verificar regras para abrir o painel Regras. Você pode exibir e gerenciar as regras que foram aplicadas à entidade de dados. Por padrão, a primeira regra no painel Regras inclui tudo.

    Um tipo complexo é mostrado como ARRAY (data type), COMPOSITE ou MAP (key type, value type). Consulte Tipos de Dados Hierárquicos para entender o que é suportado para tipos complexos.

  14. Na guia Dados, exiba uma amostra dos dados, com base na configuração do operador e em todas as regras aplicadas na guia Atributos. Você pode aplicar transformações a atributos individuais ou fazer uma transformação em massa em um grupo de atributos.
  15. Na guia Validação, verifique advertências ou erros que possam causar falha no fluxo de dados.
Adicionando uma expressão de agregação

Use o Expression Builder para selecionar visualmente os elementos para criar uma expressão no editor. Você mesmo também pode criar uma expressão manualmente.

O painel Adicionar Expressão tem duas seções: Informações da expressão e Construtor de expressões. Os campos Informações da expressão permitem especificar um nome e um tipo de dados para a expressão. Você também pode criar a expressão para ser aplicada a dois ou mais atributos. Ao trabalhar com tipos de dados complexos, como Map, Array e Struct, que podem ter níveis de tipos aninhados, você poderá optar por permitir que o construtor detecte o tipo de dados da expressão que você informar. Quando você deixa o construtor inferir o tipo de dados, é possível visualizar e atualizar o tipo de dados e validar a expressão.

A seção Construtor de expressões lista os elementos para criar uma expressão. Os elementos que podem ser usados em uma expressão incluem atributos de entrada, parâmetros e funções. Clique duas vezes ou arraste um elemento da lista para adicionar ao editor para criar a expressão ou crie-a você mesmo manualmente. Você pode validar a expressão antes de criá-la.

Entrada exibe os atributos do operador de upstream que estão vindo para esse operador de expressão. Abaixo da lista de atributos, há uma caixa de seleção que permite aplicar regras de Exclusão. Para excluir um ou mais atributos de entrada da saída dessa expressão, marque a caixa de seleção Excluir atributos de entrada. Em seguida, use o menu para adicionar os atributos de entrada que você deseja excluir da saída. Uma regra de Exclusão é aplicada a cada atributo selecionado para exclusão. Você só pode excluir atributos quando estiver adicionando a expressão pela primeira vez. Quando você edita a expressão, a caixa de seleção Excluir atributos de entrada fica indisponível.

Os Parâmetros são os parâmetros da expressão adicionados ao fluxo de dados usando o Construtor de Condições (operadores filtro, junção, pesquisa e divisão) ou Construtor de Expressões (operadores agregados e de expressão). Um parâmetro de expressão tem um nome, um tipo e um valor padrão. Consulte Adicionando um Parâmetro de Expressão.

Funções são operações executadas em argumentos transmitidos à função. As funções calculam, manipulam ou extraem valores de dados de argumentos. Veja a seguir uma lista de funções disponíveis para uso na criação de expressões:

Funções de Agregação
FunçãoDescriçãoExemplo
COUNT(value[, value]*)Retorna o número de linhas para as quais uma ou mais expressões fornecidas são todas não nulas.COUNT(expr1)
COUNT(*)Retorna o número total de linhas recuperadas, incluindo linhas contendo nulos.COUNT(*)
MAX(value)Retorna o valor máximo do argumento.MAX(expr)
MIN(value)Retorna o valor mínimo do argumento.MIN(expr)
SUM(numeric)Retorna a soma calculada com base nos valores de um grupo.SUM(expr1)
AVG(numeric)Retorna a média de valores numéricos em uma expressão.AVG(AGGREGATE_1.src1.attribute1)
LISTAGG(column[, delimiter]) WITHIN GROUP (order_by_clause)

Concatena valores da coluna de entrada com o delimitador especificado, para cada grupo com base na cláusula de ordem.

coluna contém os valores que você deseja concatenar juntos no resultado.

O delimitador separa os valores de coluna no resultado. Se um delimitador não for fornecido, um caractere vazio será usado.

order_by_clause determina a ordem em que os valores concatenados são retornados.

Essa função só pode ser usada como agregador e pode ser usada com agrupamento ou sem agrupamento. Se você usar sem agrupamento, o resultado será uma única linha. Se você usar com um agrupamento, a função retornará uma linha para cada grupo.

Considere uma tabela com duas colunas, id e name. A tabela tem três linhas. Os valores da coluna id são 101, 102 e 102. Os valores da coluna name são A, B e C.

+-----+--------+
| id  | name  |
+-----+--------+
| 101 | A     |
+-----+--------+
| 102 | B     |
+-----+--------+
| 102 | C     |
+-----+--------+

Exemplo 1: Sem agrupamento

LISTAGG(id, '-') WITHIN GROUP (ORDER BY id) retorna a coluna name com o valor A-B-C

+--------+
| name   |
+--------+
| A-B-C  |
+--------+

Exemplo 2: Agrupar pelo id

LISTAGG(id, '-') WITHIN GROUP (ORDER BY id) retorna a coluna name com os valores A e B-C em dois grupos.

+--------+
| name   |
+--------+
| A      |
+--------+
| B-C    |
+--------+
Funções de Ordem Superior

Os operadores de fluxo de dados que suportam a criação de expressões e tipos de dados hierárquicos podem usar funções de ordem superior.

Estes são os operadores suportados:

  • Agregado

  • Expressão

  • Filtro

  • Associar

  • Lookup

  • Divisão

  • Deslocar

FunçãoDescriçãoExemplo
TRANSFORM(column, lambda_function)Recebe uma matriz e uma função anônima e configura uma nova matriz aplicando a função a cada elemento e atribuindo o resultado à matriz de saída.Para um array de entrada de inteiros [1, 2, 3], TRANSFORM(array, x -> x + 1) retorna um novo array de [2, 3, 4].
TRANSFORM_KEYS(column, lambda_function)Usa um mapa e uma função com 2 argumentos (chave e valor) e retorna um mapa no qual as chaves têm o tipo do resultado da função lambda, e os valores têm o tipo dos valores de mapa da coluna.Para um mapa de entrada com chaves inteiras e valores de string {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'}, TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) retorna um novo mapa de {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'}.
TRANSFORM_VALUES(column, lambda_function)Usa um mapa e uma função com 2 argumentos (chave e valor) e retorna um mapa no qual os valores têm o tipo do resultado das funções lambda, e as chaves têm o tipo das chaves de mapa de coluna. Para um mapa de entrada com chaves de string e valores de string {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'}, TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) retorna um novo mapa de {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'}.
ARRAY_SORT(array(...), lambda_function)

Somente o operador de Expressão suporta ARRAY_SORT.

Recebe uma matriz e classifica de acordo com a função fornecida que recebe 2 argumentos.

A função deve retornar -1, 0 ou 1, dependendo de o primeiro elemento ser menor que, igual a ou maior que o segundo elemento.

Se a função for omitida, a matriz será classificada em ordem crescente.

array_sort(to_array(5, 6, 1),
                   (left, right) -> CASE WHEN left < right THEN -1
                                         WHEN left > right THEN 1 ELSE 0 END)

A matriz retornada é:

[1,5,6]

Operador Distinto

Use o operador distinto para retornar linhas distintas com valores exclusivos.

Adicionando e configurando um operador distinto
  1. No painel Operadores, arraste um operador Distinto para a tela.
  2. Com o operador distinto focalizado, na guia Detalhes do painel Propriedades, digite um nome no campo Identifier ou deixe o nome como está.

    As configurações da guia Detalhes são definidas por padrão para o operador distinto.

  3. Para exibir a saída do operador, selecione a guia Dados.
    Linhas distintas com valores exclusivos são exibidas. Você também pode aplicar transformações aos dados ou selecionar um atributo para exibir um perfil de dados ou um perfil de atributo. Saiba mais sobre Transformações de Dados.
  4. Na guia Atributos, selecione para exibir atributos de entrada ou saída. Os atributos de entrada são vinculados ao operador no lado esquerdo. Os atributos de saída são vinculados ao operador no lado direito e vão para o operador seguinte.

    Você pode selecionar atributos individuais ou usar ícones de filtro para filtrar a lista de atributos. Em seguida, aplique as regras de exclusão em massa aos atributos selecionados ou filtrados. O operador distinto opera somente nos atributos filtrados e gera linhas distintas com valores exclusivos.

    • Selecione o ícone de filtro na coluna Nome para filtrar atributos por um padrão de nome. No campo de filtro, digite uma expressão regular simples. Você pode usar os curingas ? e * no padrão regex.
    • Selecione o ícone de filtro na coluna Tipo para filtrar atributos por um tipo de dados. Use o menu para selecionar o tipo a ser usado como filtro.
      Observação

      Você só pode aplicar um filtro de padrão de nome, mas vários filtros de tipo por vez. Por exemplo, se você aplicar um filtro de padrão de nome (*_CODE) e dois filtros de tipo (numérico, varchar), os atributos serão filtrados pelo padrão de nome *_CODE e pelo tipo numérico ou varchar.
    • Use o menu Ações para aplicar regras de exclusão em massa aos atributos selecionados ou filtrados. Selecione Excluir por seleção ou Excluir por filtro aplicado.
    • Selecione Verificar regras para abrir o painel Regras. Você pode exibir e gerenciar as regras que foram aplicadas à entidade de dados. Por padrão, a primeira regra no painel Regras inclui tudo.

    Um tipo complexo é mostrado como ARRAY (data type), COMPOSITE ou MAP (key type, value type). Consulte Tipos de Dados Hierárquicos para entender o que é suportado para tipos complexos.

  5. Na guia Dados, exiba uma amostra dos dados, com base em qualquer regra aplicada na guia Atributos.

    O Perfil de Dados não é exibido para atributos de dados complexos. Para atributos de dados complexos, para exibir a hierarquia da estrutura de dados em uma estrutura simplificada, selecione os dados complexos mostrados. Por exemplo, [...] ou {…}.

    Você pode aplicar transformações a atributos individuais ou fazer uma transformação em massa em um grupo de atributos.

    Para entidades com tipos de dados hierárquicos, consulte Tipos de Dados Hierárquicos para entender o que é suportado.

  6. Na guia Validação, verifique advertências ou erros que possam causar falha no fluxo de dados.

Operador de Classificação

Use o operador de classificação para executar a classificação de dados em ordem crescente ou decrescente.

Ao usar um operador de classificação, recomendamos que você aplique-o depois de aplicar outros operadores. Isso garante que o operador de classificação permaneça imediatamente antes do operador de destino, permitindo assim que os dados sejam inseridos no destino em uma ordem específica.

Adicionando e configurando um operador de classificação

Ao usar um operador de classificação, aplique-o após outros operadores de modelagem e antes do operador que exige a classificação de dados.

Por exemplo, aplique o operador de classificação antes de um operador de destino para inserir dados no destino em uma ordem de classificação específica.

  1. No painel Operadores, arraste um operador de Classificação para a tela.
  2. Com o operador de classificação focalizado, na guia Detalhes do painel Propriedades, digite um nome no campo Identifier ou deixe o nome como está.
  3. Na seção Condições de classificação, selecione Adicionar.

    O painel Adicionar Condição de Classificação exibe todos os campos de atributo extraídos da tabela de origem.

  4. No painel Adicionar condição de classificação, selecione o atributo pelo qual classificar os dados.
  5. Para filtrar atributos usando padrões de nome, digite um padrão de nome, por exemplo, *CITY*.
  6. Em Ordem da classificação, selecione Crescente ou Decrescente e, em seguida, selecione Adicionar.

    Cada condição adicionada é exibida na lista de condições de classificação.

    Observação

    Você pode adicionar várias condições de classificação uma a uma. A classificação opera com base na ordem de condições de classificação da lista. Por exemplo, a classificação começa com base na primeira condição da lista. Em seguida, os dados classificados são reclassificados com base na segunda condição e assim por diante.

    Para tipos de dados de string, a operação de classificação ocorre com base na ordem lexicográfica.

  7. Na guia Atributos, selecione para exibir atributos de entrada ou saída. Os atributos de entrada são vinculados ao operador no lado esquerdo. Os atributos de saída são vinculados ao operador no lado direito e vão para o operador seguinte.

    Você pode selecionar atributos individuais ou usar ícones de filtro para filtrar a lista de atributos. Em seguida, aplique as regras de exclusão em massa aos atributos selecionados ou filtrados.

    • Selecione o ícone de filtro na coluna Nome para filtrar atributos por um padrão de nome. No campo de filtro, digite uma expressão regular simples. Você pode usar os curingas ? e * no padrão regex.
    • Selecione o ícone de filtro na coluna Tipo para filtrar atributos por um tipo de dados. Use o menu para selecionar o tipo a ser usado como filtro.
      Observação

      Você só pode aplicar um filtro de padrão de nome, mas vários filtros de tipo por vez. Por exemplo, para filtrar pelo padrão de nome *_CODE e pelo tipo numérico ou varchar, você aplica um filtro de padrão de nome (*_CODE) e dois filtros de tipo (numérico, varchar).
    • Use o menu Ações para aplicar regras de exclusão em massa aos atributos selecionados ou filtrados. Selecione Excluir por seleção ou Excluir por filtro aplicado.
    • Selecione Verificar regras para abrir o painel Regras. Você pode exibir e gerenciar as regras que foram aplicadas à entidade de dados. Por padrão, a primeira regra no painel Regras inclui tudo.

    Um tipo complexo é mostrado como ARRAY (data type), COMPOSITE ou MAP (key type, value type). Consulte Tipos de Dados Hierárquicos para entender o que é suportado para tipos complexos.

  8. Na guia Dados, exiba uma amostra dos dados, com base na configuração do operador e em quaisquer regras aplicadas na guia Atributos.

    O Perfil de Dados não é exibido para atributos de dados complexos. Para atributos de dados complexos, para exibir a hierarquia da estrutura de dados em uma estrutura simplificada, selecione os dados complexos mostrados. Por exemplo, [...] ou {…}.

    Você pode aplicar transformações a atributos individuais ou fazer uma transformação em massa em um grupo de atributos.

    Para entidades com tipos de dados hierárquicos, consulte Tipos de Dados Hierárquicos para entender o que é suportado.

  9. Na guia Validação, verifique advertências ou erros que possam causar falha no fluxo de dados.
Adicionando condições de classificação

Depois de adicionar um operador de classificação na tela e conectá-lo a outro operador, você poderá adicionar uma condição de classificação.

No painel Adicionar Condição de Classificação, você pode selecionar atributos para classificar nos campos listados ou filtrar nomes de atributo usando padrões. Para tipos de dados de string, a operação de classificação ocorre com base na ordem lexicográfica.

Para adicionar condições de classificação:

  1. Na guia Detalhes, vá para a seção Classificar condições e selecione Adicionar.

    O painel Adicionar Condição de Classificação exibe todos os campos de atributo extraídos da tabela de origem.

  2. No painel Adicionar condição de classificação, selecione o atributo pelo qual classificar os dados.
  3. Para filtrar atributos usando padrões de nome, digite um padrão de nome, por exemplo, *CITY*.
  4. Para Ordem da classificação, selecione Crescente ou Decrescente e, em seguida, selecione Adicionar.

    Cada condição adicionada é exibida na lista de condições de classificação.

    Observação

    Você pode adicionar várias condições de classificação uma a uma. A classificação opera com base na ordem de condições de classificação da lista. Por exemplo, a classificação acontece primeiro com base na primeira condição da lista e, em seguida, os dados classificados são reclassificados com base na segunda condição e assim por diante.
Priorizando condições de classificação

Mova as condições de classificação para cima ou para baixo na lista para priorizar a classificação.

Mover condições de classificação para cima ou para baixo permite classificar primeiro por uma condição de classificação de alta prioridade e, em seguida, reclassificar os dados classificados pela próxima condição na lista. Por exemplo, para classificar primeiro por endereço e depois pelo CEP, mova a condição de classificação com endereço para o início.

Para priorizar condições de classificação:

  1. Na guia Detalhes, vá para a seção Condições de classificação.
  2. Selecione o menu Ações (Menu Ações) correspondente à condição de classificação que você deseja mover para cima ou baixo.
  3. Para fazer com que uma condição de classificação seja aplicada primeiro, selecione Mover para cima.
  4. Para fazer com que uma condição de classificação seja aplicada posteriormente, selecione Mover para baixo.
    A classificação é aplicada primeiro à condição movida para cima e depois à condição movida para baixo.
Editando condições de classificação

Para editar condições de classificação:

  1. Na guia Detalhes, vá para a seção Condições de classificação.
  2. Selecione o menu Ações (Menu Ações) correspondente à condição de classificação que deseja alterar e, em seguida, selecione Editar.
  3. No painel Editar condição de classificação, selecione o novo atributo ou filtre os atributos digitando um padrão de nome.
    Os atributos ou padrões já selecionados, incluindo seus atributos associados, não estão disponíveis para seleção adicional.
Excluindo condições de classificação

Você pode excluir as condições de classificação uma a uma ou pode fazer uma exclusão em massa.

Para excluir condições de classificação:

  1. Na guia Detalhes, vá para a seção Condições de classificação.
  2. Para excluir condições de classificação, uma a uma, selecione o menu Ações (Menu Ações) correspondente à condição de classificação que você deseja excluir.
  3. Para excluir várias condições de classificação, marque as caixas de seleção correspondentes a cada uma delas e, em seguida, selecione Excluir no topo da lista.

Operador de União

Use o operador de união para executar uma operação de união entre dois ou mais conjuntos de dados.

Noções básicas de tipos de união

Você pode executar uma operação de união em até dez operadores de origem. Configure pelo menos duas entradas de origem. Você pode optar por executar a operação de união correspondendo nomes de atributos entre os atributos de entrada de origem ou pode corresponder os atributos pela posição deles.

União pelo nome do atributo

Leve em consideração os dois exemplos de entidade de dados a seguir. A entidade de dados 1 é definida como entrada principal. A entidade de dados resultante mostra como os dados das duas entradas são combinados durante uma união por operação de nome. A entidade de dados resultante usa o nome do atributo, a ordem e o tipo de dados da entidade de dados de entrada principal.

Entidade de Dados 1, entrada principal
Departamento LOCATION-ID Warehouse
IT 1400 San Francisco
Shipping 1500 Southlake, Texas
Accounting 1700 New Jersey
Entidade de Dados 2
Warehouse LOCATION-ID Departamento
Denver 1600 Benefits
New York 1400 Construction
Entidade de Dados Resultante
Departamento LOCATION-ID Warehouse
IT 1400 San Francisco
Shipping 1500 Southlake, Texas
Accounting 1700 New Jersey
Benefits 1600 Denver
Construction 1400 New York
União pela posição do atributo

Leve em consideração os dois exemplos de entidade de dados a seguir. A entidade de dados 2 é definida como entrada principal. A entidade de dados resultante mostra como os dados das duas entradas são combinados durante uma operação de união por posição. A entidade de dados resultante usa o nome do atributo, a ordem e o tipo de dados da entidade de dados de entrada principal.

Entidade de Dados 1
Departamento LOCATION-ID Warehouse
IT 1400 San Francisco
Shipping 1500 Southlake, Texas
Accounting 1700 New Jersey
Entidade de Dados 2, entrada principal
Warehouse LOCATION-ID Departamento
Denver 1600 Benefits
New York 1400 Construction
Entidade de Dados Resultante
Warehouse LOCATION-ID Departamento
Denver 1600 Benefits
New York 1400 Construction
IT 1400 San Francisco
Shipping 1500 Southlake, Texas
Accounting 1700 New Jersey
Adicionando e configurando um operador de união
  1. Para adicionar um operador de união ao fluxo de dados, arraste o operador de União do painel Operadores para a tela. Você pode executar a operação de união em até dez origens de dados.
    A guia Detalhes do operador de união é exibida no painel Propriedades.
  2. Na guia Detalhes, digite um nome para essa operação de união no campo Identificador ou deixe o nome como está.
  3. Especifique como deseja que a operação de união seja executada usando o campo Comparar atributo de entrada por. Você pode escolher entre as duas seguintes opções:
    • Nome: Os nomes de atributo das origens são correspondidos para executar a operação de união. Os nomes de atributo, os tipos de dados e o número de atributos entre as entradas devem ser idênticos. A correspondência faz distinção entre maiúsculas e minúsculas. Revise os exemplos para entender como funciona a operação de união por nome.
    • Posição: Os atributos das origens são correspondidos com base em suas posições. O número de atributos e os tipos de dados do atributo nas entradas devem ser idênticos. Verifique os exemplos para entender como funciona a operação de união por posição.
  4. Para Unir tudo, marque a caixa de seleção se quiser que a operação retorne todas as linhas de todas as entidades de dados conectadas sem eliminar qualquer duplicação.
  5. Para Entrada principal, selecione a origem que deve ser considerada como chave na operação de união. Essa entrada principal determina os nomes e os tipos de dados dos atributos, em como a ordem dos atributos resultantes da operação de união. Por padrão, a primeira origem adicionada ao fluxo de dados é definida como entrada principal.
  6. Na guia Atributos, selecione para exibir atributos de entrada ou saída. Os atributos de entrada são vinculados ao operador no lado esquerdo. Os atributos de saída são vinculados ao operador no lado direito e vão para o operador seguinte.

    Você pode selecionar atributos individuais ou usar ícones de filtro para filtrar a lista de atributos. Em seguida, aplique as regras de exclusão em massa aos atributos selecionados ou filtrados.

    • Selecione o ícone de filtro na coluna Nome para filtrar atributos por um padrão de nome. No campo de filtro, digite uma expressão regular simples. Você pode usar os curingas ? e * no padrão regex.
    • Selecione o ícone de filtro na coluna Tipo para filtrar atributos por um tipo de dados. Use o menu para selecionar o tipo a ser usado como filtro.
      Observação

      Você só pode aplicar um filtro de padrão de nome, mas vários filtros de tipo por vez. Por exemplo, se você aplicar um filtro de padrão de nome (*_CODE) e dois filtros de tipo (numérico, varchar), os atributos serão filtrados pelo padrão de nome *_CODE e pelo tipo numérico ou varchar.
    • Use o menu Ações para aplicar regras de exclusão em massa aos atributos selecionados ou filtrados. Selecione Excluir por seleção ou Excluir por filtro aplicado.
    • Selecione Verificar regras para abrir o painel Regras. Você pode exibir e gerenciar as regras que foram aplicadas à entidade de dados. Por padrão, a primeira regra no painel Regras inclui tudo.

    Um tipo complexo é mostrado como ARRAY (data type), COMPOSITE ou MAP (key type, value type). Consulte Tipos de Dados Hierárquicos para entender o que é suportado para tipos complexos.

  7. Na guia Dados, exiba uma amostra dos dados, com base na configuração do operador e em quaisquer regras aplicadas na guia Atributos.

    O Perfil de Dados não é exibido para atributos de dados complexos. Para atributos de dados complexos, para exibir a hierarquia da estrutura de dados em uma estrutura simplificada, selecione os dados complexos mostrados. Por exemplo, [...] ou {…}.

    Você pode aplicar transformações a atributos individuais ou fazer uma transformação em massa em um grupo de atributos.

    Para entidades com tipos de dados hierárquicos, consulte Tipos de Dados Hierárquicos para entender o que é suportado.

  8. Na guia Validação, verifique advertências ou erros que possam causar falha no fluxo de dados.

Operador de Subtração

Use o operador de subtração para comparar duas entidades de dados e retornar as linhas que estão presentes em uma entidade, mas não na outra.

Você pode optar por manter ou eliminar linhas duplicadas nos dados resultantes.

Noções básicas de tipos de subtração

Você só pode executar uma operação de subtração em dois operadores de origem. Você pode optar por executar a operação de subtração correspondendo nomes de atributos entre os atributos de entrada de origem ou pode corresponder os atributos pela posição deles.

Subtração pelo nome do atributo

Leve em consideração os dois exemplos de entidade de dados a seguir. A entidade de dados 1 é definida como entrada principal. A entidade de dados resultante mostra como os dados das duas entradas são subtraídos durante uma operação de subtração por nome. A entidade de dados resultante usa o nome do atributo, a ordem e o tipo de dados da entidade de dados de entrada principal.

Entidade de Dados 1, entrada principal
DepartamentoLOCATION-IDWarehouse
IT1400San Francisco
Shipping1500Austin
Accounting1700New Jersey
Entidade de Dados 2
DepartamentoWarehouseLOCATION-ID
BenefitsDenver1600
ITSan Francisco1400
Entidade de Dados Resultante
DepartamentoLOCATION-IDWarehouse
Shipping1500Austin
Accounting1700New Jersey
Subtração pela posição do atributo

Leve em consideração os dois exemplos de entidade de dados a seguir. A entidade de dados 2 é definida como entrada principal. A entidade de dados resultante mostra como os dados das duas entradas são subtraídos durante uma operação de subtração por posição. A entidade de dados resultante usa o nome do atributo, a ordem e o tipo de dados da entidade de dados de entrada principal.

Entidade de Dados 1
DepartamentoLOCATION-IDWarehouse
IT1400San Francisco
Shipping1500Austin
Accounting1700New Jersey
Entidade de Dados 2, entrada principal
Department-NameLocalWarehouse-City
Benefits1600Denver
IT1400San Francisco
Entidade de Dados Resultante
Department-NameLocalWarehouse-City
Benefits1600Denver
Adicionando e configurando um operador de subtração
  1. Para adicionar um operador de menos ao fluxo de dados, arraste o operador de Minus do painel Operadores para a tela.
    A guia Detalhes do operador de subtração é exibida no painel Propriedades.
  2. Na guia Detalhes, digite um nome para essa operação de subtração no campo Identificador ou deixe o nome como está.
  3. Especifique como você deseja que a operação de subtração seja executada usando o campo Comparar atributos de entrada por. Você pode escolher entre as duas seguintes opções:
    • Nome: Os nomes de atributo das origens são correspondidos para executar a operação de subtração. Os nomes de atributo, os tipos de dados e o número de atributos entre as entradas devem ser idênticos. A correspondência faz distinção entre maiúsculas e minúsculas. Verifique os exemplos para entender como funciona a operação de subtração por nome.
    • Posição: Os atributos das origens são correspondidos com base em suas posições. O número de atributos e os tipos de dados do atributo nas entradas devem ser idênticos. Verifique os exemplos para entender como funciona a operação de subtração por posição.
  4. Para Subtrair tudo, marque a caixa de seleção se quiser que a operação retorne todas as linhas encontradas em uma entidade de dados que não estejam presentes na outra entidade de dados, sem eliminar duplicações.
  5. Para entrada principal, selecione a origem a ser usada como origem principal da operação de subtração. A entrada principal determina os nomes, os tipos de dados e a ordem dos atributos na saída resultante. Por padrão, a primeira origem conectada ao operador de subtração é definida como entrada principal.
    Ícone Entrada Principal Descrição
    diagrama de junção externa esquerda Menos à esquerda Seleciona todas as linhas distintas restantes da origem de entrada 1 depois de eliminar as linhas que correspondem à origem de entrada 2.
    diagrama de junção externa direita Menos à direita Seleciona todas as linhas distintas restantes da origem de entrada 2 depois de eliminar as linhas que correspondem à origem de entrada 1.
  6. Na guia Atributos, selecione para exibir atributos de entrada ou saída. Os atributos de entrada são vinculados ao operador no lado esquerdo. Os atributos de saída são vinculados ao operador no lado direito e vão para o operador seguinte.

    Você pode selecionar atributos individuais ou usar ícones de filtro para filtrar a lista de atributos. Em seguida, aplique as regras de exclusão em massa aos atributos selecionados ou filtrados.

    • Selecione o ícone de filtro na coluna Nome para filtrar atributos por um padrão de nome. No campo de filtro, digite uma expressão regular simples. Você pode usar os curingas ? e * no padrão regex.
    • Selecione o ícone de filtro na coluna Tipo para filtrar atributos por um tipo de dados. Use o menu para selecionar o tipo a ser usado como filtro.
      Observação

      Você só pode aplicar um filtro de padrão de nome, mas vários filtros de tipo por vez. Por exemplo, se você aplicar um filtro de padrão de nome (*_CODE) e dois filtros de tipo (numérico, varchar), os atributos serão filtrados pelo padrão de nome *_CODE e pelo tipo numérico ou varchar.
    • Use o menu Ações para aplicar regras de exclusão em massa aos atributos selecionados ou filtrados. Selecione Excluir por seleção ou Excluir por filtro aplicado.
    • Selecione Verificar regras para abrir o painel Regras. Você pode exibir e gerenciar as regras que foram aplicadas à entidade de dados. Por padrão, a primeira regra no painel Regras inclui tudo.

    Um tipo complexo é mostrado como ARRAY (data type), COMPOSITE ou MAP (key type, value type). Consulte Tipos de Dados Hierárquicos para entender o que é suportado para tipos complexos.

  7. Na guia Dados, exiba uma amostra dos dados, com base na configuração do operador e em todas as regras aplicadas na guia Atributos.

    O Perfil de Dados não é exibido para atributos de dados complexos. Para atributos de dados complexos, para exibir a hierarquia da estrutura de dados em uma estrutura simplificada, selecione os dados complexos mostrados. Por exemplo, [...] ou {…}.

    Você pode aplicar transformações a atributos individuais ou fazer uma transformação em massa em um grupo de atributos.

    Para entidades com tipos de dados hierárquicos, consulte Tipos de Dados Hierárquicos para entender o que é suportado.

  8. Na guia Validação, verifique advertências ou erros que possam causar falha no fluxo de dados.

Operador de Intersecção

Use o operador de intersecção para comparar duas ou mais entidades de dados e retornar as linhas presentes nas entidades conectadas.

Você pode optar por manter ou eliminar linhas duplicadas nos dados resultantes.

Noções básicas de tipos de intersecção

Você pode executar uma operação de intersecção em dois ou mais operadores de origem. Você pode optar por executar a operação correspondendo nomes de atributos entre os atributos de entrada de origem ou pode corresponder os atributos pela posição deles.

Intersecção pelo nome do atributo

Leve em consideração os dois exemplos de entidade de dados a seguir. A entidade de dados 1 é definida como entrada principal. A entidade de dados resultante mostra como os dados das duas entradas são intersectados pelo nome do atributo. A entidade de dados resultante usa o nome do atributo, a ordem e o tipo de dados da entidade de dados de entrada principal.

Entidade de Dados 1, entrada principal
DepartamentoLOCATION-IDWarehouse
IT1400San Francisco
Shipping1500Austin
Accounting1700New Jersey
Entidade de Dados 2
DepartamentoWarehouseLOCATION-ID
BenefitsDenver1600
ITSan Francisco1400
Entidade de Dados Resultante
DepartamentoLOCATION-IDWarehouse
IT1400San Francisco
Intersecção pela posição do atributo

Leve em consideração os dois exemplos de entidade de dados a seguir. A entidade de dados 2 é definida como entrada principal. A entidade de dados resultante mostra como os dados das duas entradas são intersectados pela posição do atributo. A entidade de dados resultante usa o nome do atributo, a ordem e o tipo de dados da entidade de dados de entrada principal.

Entidade de Dados 1
DepartamentoLOCATION-IDWarehouse
IT1400San Francisco
Shipping1500Austin
Accounting1700New Jersey
Entidade de Dados 2, entrada principal
Department-NameLocalWarehouse-City
Benefits1600Denver
IT1400San Francisco
Entidade de Dados Resultante
Department-NameLocalWarehouse-City
IT1400San Francisco
Adicionando e configurando um operador de intersecção
  1. Para adicionar um operador de intersecção ao fluxo de dados, arraste o operador de Intersecção do painel Operadores para a tela.
    A guia Detalhes do operador de cruzamento é exibida no painel Propriedades.
  2. Na guia Detalhes, digite um nome para essa operação de intersecção no campo Identificador ou deixe o nome como está.
  3. Especifique como deseja que a operação de intersecção seja executada usando o campo Comparar atributos de entrada por. Você pode escolher entre as duas seguintes opções:
    • Nome: Os nomes de atributo das origens são correspondidos para executar a operação de intersecção. Os nomes de atributo, os tipos de dados e o número de atributos entre as entradas devem ser idênticos. A correspondência faz distinção entre maiúsculas e minúsculas. Verifique os exemplos para entender como funciona a operação de intersecção por nome.
    • Posição: Os atributos das origens são correspondidos com base em suas posições. O número de atributos e os tipos de dados do atributo nas entradas devem ser idênticos. Verifique os exemplos para entender como funciona a operação de intersecção por posição.
  4. Para Intersectar tudo, marque a caixa de seleção se quiser que a operação retorne todas as linhas na saída resultante, sem eliminar duplicações.
  5. Para Entrada principal, selecione a origem a ser usada como principal para a operação de intersecção. A entrada principal determina os nomes, os tipos de dados e a ordem dos atributos na saída resultante. Por padrão, a primeira origem conectada ao operador de intersecção é definida como entrada principal.
  6. Na guia Atributos, selecione para exibir atributos de entrada ou saída. Os atributos de entrada são vinculados ao operador no lado esquerdo. Os atributos de saída são vinculados ao operador no lado direito e vão para o operador seguinte.

    Você pode selecionar atributos individuais ou usar ícones de filtro para filtrar a lista de atributos. Em seguida, aplique as regras de exclusão em massa aos atributos selecionados ou filtrados.

    • Selecione o ícone de filtro na coluna Nome para filtrar atributos por um padrão de nome. No campo de filtro, digite uma expressão regular simples. Você pode usar os curingas ? e * no padrão regex.
    • Selecione o ícone de filtro na coluna Tipo para filtrar atributos por um tipo de dados. Use o menu para selecionar o tipo a ser usado como filtro.
      Observação

      Você só pode aplicar um filtro de padrão de nome, mas vários filtros de tipo por vez. Por exemplo, se você aplicar um filtro de padrão de nome (*_CODE) e dois filtros de tipo (numérico, varchar), os atributos serão filtrados pelo padrão de nome *_CODE e pelo tipo numérico ou varchar.
    • Use o menu Ações para aplicar regras de exclusão em massa aos atributos selecionados ou filtrados. Selecione Excluir por seleção ou Excluir por filtro aplicado.
    • Selecione Verificar regras para abrir o painel Regras. Você pode exibir e gerenciar as regras que foram aplicadas à entidade de dados. Por padrão, a primeira regra no painel Regras inclui tudo.

    Um tipo complexo é mostrado como ARRAY (data type), COMPOSITE ou MAP (key type, value type). Consulte Tipos de Dados Hierárquicos para entender o que é suportado para tipos complexos.

  7. Na guia Dados, exiba uma amostra dos dados, com base na configuração do operador e em todas as regras aplicadas na guia Atributos.

    O Perfil de Dados não é exibido para atributos de dados complexos. Para atributos de dados complexos, para exibir a hierarquia da estrutura de dados em uma estrutura simplificada, selecione os dados complexos mostrados. Por exemplo, [...] ou {…}.

    Você pode aplicar transformações a atributos individuais ou fazer uma transformação em massa em um grupo de atributos.

    Para entidades com tipos de dados hierárquicos, consulte Tipos de Dados Hierárquicos para entender o que é suportado.

  8. Na guia Validação, verifique advertências ou erros que possam causar falha no fluxo de dados.

Operador de Divisão

Use o operador de divisão para dividir uma origem de dados de entrada em duas ou mais portas de saída com base em condições de divisão avaliadas em uma sequência.

Cada condição de divisão tem uma porta de saída. Os dados que satisfazem uma condição são direcionados para a porta de saída correspondente.

Por padrão, um operador de divisão é configurado com a condição Sem Correspondência, que está sempre disponível na sequência como última condição. Não é possível adicionar sua própria condição à condição Sem Correspondência. Você também não pode excluir a condição Sem Correspondência.

O operador avalia as condições uma de cada vez. Depois que todas as condições na sequência forem avaliadas, os dados que não atenderem a uma condição serão direcionados para a porta de saída Sem Correspondência.

Exemplo de divisão

Suponha que você tenha a entidade de dados BANK, com os atributos BANK_ID e BANK_NAME.

Você configura duas condições de divisão. A sequência completa, incluindo a condição Sem Correspondência, é a seguinte:

Porta de Saída da CondiçãoCondição
CONDITION1SPLIT_1.BANK.BANK_ID<102
CONDITION2SPLIT_1.BANK.BANK_ID<104
UNMATCHEDA condição UNMATCHED padrão direciona todos os dados que não atendem às outras condições na sequência para a porta de saída UNMATCHED
Entidade de Dados BANK

A entidade de dados tem quatro linhas.

BANK_IDBANK_NAME
101A Bank 101
102B Bank 102
103C Bank 103
104D Bank 104
Saída de Condition1, Primeira Condição de Correspondência

CONDITION1 retorna uma linha correspondente.

BANK_IDBANK_NAME
101A Bank 101
Saída de Condition2, Primeira Condição de Correspondência

CONDITION2 retorna duas linhas correspondentes (entre as linhas sem correspondência após CONDITION1).

BANK_IDBANK_NAME
102B Bank 102
103C Bank 103
Saída da Condição Sem Correspondência, Primeira Condição de Correspondência

A condição UNMATCHED retorna a linha restante.

BANK_IDBANK_NAME
104D Bank 104
Saída de Condition1, Todas as Condições de Correspondência

CONDITION1 retorna uma linha correspondente.

BANK_IDBANK_NAME
101A Bank 101
Saída de Condition2, Todas as Condições de Correspondência

Todos os dados são avaliados por CONDITION2, retornando três linhas de correspondência.

BANK_IDBANK_NAME
101A Bank 101
102B Bank 102
103C Bank 103
Saída da Condição Sem Correspondência, Todas as Condições de Correspondência

A condição UNMATCHED retorna as linhas que não atendem a CONDITION1 e CONDITION2.

BANK_IDBANK_NAME
104D Bank 104
Adicionando e configurando um operador de divisão

Quando você adiciona um operador de divisão na tela, por padrão, o ícone do operador de divisão é exibido como expandido, mostrando a condição de divisão Sem Correspondência. A condição Sem Correspondência direciona todos os dados que não atendem às outras condições adicionadas à sequência.

  1. No painel Operadores, arraste um operador de Divisão para a tela.
  2. Com o operador de divisão focalizado, na guia Detalhes do painel Propriedades, digite um nome no campo Identifier ou deixe o nome como está.
  3. Em Correspondência, especifique como deseja tratar os dados de entrada que atendem a uma condição de divisão. Você pode escolher entre as duas seguintes opções:
    • Primeira condição de correspondência: Os dados que correspondem à primeira condição na sequência são removidos do processamento posterior por condições subsequentes.

      Por exemplo, considere uma sequência com quatro condições, incluindo a última condição Sem Correspondência: Condition1, Condition2, Condition3 e Sem Correspondência.

      Para Condition1, a operação não encontra correspondências. Para Condition2, são encontradas correspondências. A operação roteia os dados correspondentes para a porta de saída especificada para Condition2 e, em seguida, avalia os dados sem correspondência para Condition3. Se nenhuma correspondência for encontrada para Condtion3, todos os dados serão roteados para a porta de saída especificada para a condição Sem Correspondência. No entanto, se forem encontradas correspondências para Condition3, a operação roteará os dados correspondentes para a porta de saída de Condition3 e, em seguida, roteará os dados restantes para a porta da condição Sem Correspondência.

    • Todas as condições de correspondência: Os dados que correspondem a qualquer condição são avaliados para todas as condições na sequência.

      Por exemplo, considere uma sequência com Condition1 e Condition2. As correspondências são encontradas após a avaliação de Condition1. Os dados correspondentes são roteados para a porta de saída especificada para Condition1. Todos os dados (correspondentes e não correspondentes) são avaliados por Condition2. Os dados que correspondem a Condition2 são roteados para a porta de saída correspondente. Os dados que não atendem a Condition1 e Condition2 são roteados para a porta de saída da condição de divisão Sem Correspondência.

  4. Em Condições de divisão, selecione Adicionar condição para adicionar uma condição de divisão.
    1. No painel para adicionar uma condição de divisão, edite o valor do Identificador ou deixe-o como está.
    2. Na seção Construtor de condições, você pode clicar duas vezes ou arrastar atributos, parâmetros e funções para adicionar ao editor e criar uma condição. Você também pode digitar uma expressão de condição manualmente no editor e validar a expressão.
      Observação

      No editor, um elemento adicionado, como uma função, pode ter espaços reservados. Para substituir um espaço reservado por outro elemento, destaque o espaço reservado e clique duas vezes em outro elemento da lista.
    3. Selecione Adicionar.
      A primeira condição adicionada é inserida antes da condição Sem Correspondência. Você também pode ver a sequência de condições no ícone do operador expandido na tela.
    4. Repita as etapas para adicionar condições e formar uma sequência.
      A segunda condição é inserida na sequência entre a primeira e a condição Sem Correspondência. As condições subsequentes são sempre inseridas antes da condição Sem Correspondência. A sequência de condições de divisão também é refletida no ícone do operador de divisão expandido na tela.
  5. Para conectar uma porta de saída de uma condição de divisão a outro operador na tela:
    1. Expanda o ícone do operador de divisão para exibir a sequência de condições.
      Se o ícone do operador de divisão não estiver expandido, você ainda poderá conectar o operador ao operador seguinte, mas o link será criado na porta da condição Sem Correspondência.
    2. Passe o mouse sobre o fim de uma condição e arraste o círculo pequeno do lado direito da condição para o próximo operador de modelagem ou um destino.
    3. Conecte cada condição ao operador ou destino apropriado.
    Cada porta de saída de condição pode ser vinculada a vários operadores de modelagem e de destino. Se o ícone do operador de divisão não estiver expandido na tela, você poderá passar o mouse sobre uma linha de link para ver o nome da condição desse link.
  6. Na guia Atributos, selecione para exibir atributos de entrada ou saída. Os atributos de entrada são vinculados ao operador no lado esquerdo. Os atributos de saída são vinculados ao operador no lado direito e vão para o operador seguinte.

    Você pode selecionar atributos individuais ou usar ícones de filtro para filtrar a lista de atributos. Em seguida, aplique as regras de exclusão em massa aos atributos selecionados ou filtrados.

    • Selecione o ícone de filtro na coluna Nome para filtrar atributos por um padrão de nome. No campo de filtro, digite uma expressão regular simples. Você pode usar os curingas ? e * no padrão regex.
    • Selecione o ícone de filtro na coluna Tipo para filtrar atributos por um tipo de dados. Use o menu para selecionar o tipo a ser usado como filtro.
      Observação

      Você só pode aplicar um filtro de padrão de nome, mas vários filtros de tipo por vez. Por exemplo, para filtrar pelo padrão de nome *_CODE e pelo tipo numérico ou varchar, você aplica um filtro de padrão de nome (*_CODE) e dois filtros de tipo (numérico, varchar).
    • Use o menu Ações para aplicar regras de exclusão em massa aos atributos selecionados ou filtrados. Selecione Excluir por seleção ou Excluir por filtro aplicado.
    • Selecione Verificar regras para abrir o painel Regras. Você pode exibir e gerenciar as regras que foram aplicadas à entidade de dados. Por padrão, a primeira regra no painel Regras inclui tudo.

    Um tipo complexo é mostrado como ARRAY (data type), COMPOSITE ou MAP (key type, value type). Consulte Tipos de Dados Hierárquicos para entender o que é suportado para tipos complexos.

  7. Na guia Dados, exiba uma amostra dos dados, com base na configuração do operador e em quaisquer regras aplicadas na guia Atributos.

    O menu Porta de saída condicional mostra o mesmo número de itens do número de condições configuradas no operador, incluindo a condição Sem Correspondência. Por padrão, a saída da primeira porta da condição é mostrada. Para alterar a exibição de saída, selecione a porta da saída da condição no menu.

    O Perfil de Dados não é exibido para atributos de dados complexos. Para atributos de dados complexos, para exibir a hierarquia da estrutura de dados em uma estrutura simplificada, selecione os dados complexos mostrados. Por exemplo, [...] ou {…}.

    Você pode aplicar transformações a atributos individuais ou fazer uma transformação em massa em um grupo de atributos.

    Para entidades com tipos de dados hierárquicos, consulte Tipos de Dados Hierárquicos para entender o que é suportado.

  8. Na guia Validação, verifique advertências ou erros que possam causar falha no fluxo de dados.
Adicionando uma condição de divisão

Use o Condition Builder para selecionar visualmente elementos para criar e adicionar uma condição de divisão. Também é possível informar uma condição de divisão manualmente no editor.

Você pode adicionar condições de divisão a uma sequência existente de condições. As condições de divisão são adicionadas ao final da sequência, antes da condição Sem Correspondência. Não é possível adicionar sua própria condição à condição Sem Correspondência.

Os elementos que podem ser usados em uma condição de divisão incluem atributos de entrada, parâmetros e funções. Você pode clicar duas vezes ou arrastar um elemento da lista para adicionar ao editor para criar uma condição. É possível validar a condição antes de criá-la.

Entrada exibe os atributos da porta de upstream. Por exemplo:

SPLIT_1.BANK.BANK_NAME='ABC Bank'

Os Parâmetros são os parâmetros da expressão adicionados ao fluxo de dados usando o Construtor de Condições (operadores filtro, junção, pesquisa e divisão) ou Construtor de Expressões (operadores agregados e de expressão). Um parâmetro de expressão tem um nome, um tipo e um valor padrão. Consulte Adicionando um Parâmetro de Expressão.

Suponha que você crie um parâmetro VARCHAR com o nome P_VARCHAR_NAME e defina o valor padrão como ABC BANK. Você então poderá usar o parâmetro em uma condição de divisão como:

SPLIT_1.BANK.BANK_NAME=$P_VARCHAR_NAME

As Funções são aquelas disponíveis no serviço Data Integration que você pode usar em uma condição. Funções são operações executadas em argumentos transmitidos à função. As funções calculam, manipulam ou extraem valores de dados de argumentos.

Suponha que você crie um parâmetro VARCHAR com o nome P_VARCHAR_LIKE e defina o valor padrão como B%. Você então poderá usar o parâmetro em uma condição de divisão como:

SPLIT_1.BANK.BANK_NAME LIKE $P_VARCHAR_LIKE

Veja a seguir uma lista de funções que estão disponíveis para você adicionar quando construir as condições:

Funções de Hash
FunçãoDescriçãoExemplo
MD5(all data types)Calcula uma soma de verificação MD5 do tipo de dados e retorna um valor de string. MD5(column_name)
SHA1(all data types)Calcula um valor de hash SHA-1 do tipo de dados e retorna um valor de string. SHA1(column_name)
SHA2(all data types, bitLength)Calcula um valor de hash SHA-2 do tipo de dados e retorna um valor de string. bitLengthé um número inteiro. SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512).
ORA_HASH(expr, [max_bucket], [seed_value])

Calcula um valor de hash para expr e retorna um valor NUMBER.

expr pode ser uma expressão, uma coluna, um literal.

max_bucket é o valor máximo de bucket retornado, entre 0 e 4294967295 (padrão).

seed_value é um valor entre 0 (padrão) e 4294967295.

A Oracle aplica a função hash à combinação de expr e seed_value para produzir muitos resultados diferentes para o mesmo conjunto de dados.

ORA_HASH('1')

ORA_HASH('b', 2)

ORA_HASH(100, 10, 10)

ORA_HASH(EXPRESSION_1.CUSTOMERS.SSN, 2)

Funções Aritméticas
FunçãoDescriçãoExemplo
ABS(numeric)Retorna a potência absoluta do valor numeric.ABS(-1)
CEIL(numeric)Retorna o menor inteiro não maior que o valor numericCEIL(-1,2)
FLOOR(numeric)Retorna o maior inteiro não maior que o valor numeric.FLOOR(-1,2)
MOD(numeric1, numeric2)Retorna o resto depois que numeric1 é dividido por numeric2.MOD(8,2)
POWER(numeric1, numeric2)Eleva numeric1 à potência de numeric2.POWER(2,3)
ROUND(numeric1, numeric2)Retorna numeric1 arredondado para numeric2 casas decimais.ROUND(2.5,0)
TRUNC(numeric1, numeric2)Retorna numeric1 truncado em numeric2 casas decimais.TRUNC(2.5,0)
TO_NUMBER(expr[, format, locale])Converte um expr em um número, com base em format e em locale opcional fornecidos. A configuração regional padrão é en-US. Tags de idioma suportadas.

Padrões de formato suportados:

  • 0: Um dígito
  • #: Um dígito, zero mostra como ausente
  • .: Espaço reservado para separador decimal
  • ,: Espaço reservado para separador de agrupamento
  • E: Separa mantissa e expoente para formatos exponenciais
  • -: Prefixo negativo padrão
  • ¤: Sinal de moeda; substituído pelo símbolo de moeda; se duplo, substituído pelo símbolo de moeda internacional; se presente em um padrão, o separador decimal monetário é usado no lugar do separador decimal

TO_NUMBER('5467.12') returns retorna 5467.12

TO_NUMBER('-USD45,677.7', '¤¤##,###.#', 'en-US') retorna -45677.7

Funções de Date e Hora
Função Descrição Exemplo
CURRENT_DATE Retorna a data atual. CURRENT_DATEretorna a data de hoje, como 2023-05-26
CURRENT_TIMESTAMP Retorna a data atual e a hora do fuso horário da sessão. CURRENT_TIMESTAMP retorna a data e a hora atuais de hoje, como 2023-05-26 12:34:56
DATE_ADD(date, number_of_days) Retorna a data que é o number especificado de dias após o date especificado. DATE_ADD('2017-07-30', 1) retorna 2017-07-31
DATE_FORMAT(expr, format[, locale])

Formata uma expr de Data, com base no format e no locale opcional fornecidos. A configuração regional padrão é en-US. Tags de idioma suportadas.

Padrões de formato de data suportados:

  • yy: ano com dois dígitos
  • yyyy: ano com quatro dígitos
  • M: Mês numérico, como 1 para janeiro
  • MM: Mês numérico, como 01 para janeiro
  • MMM: Mês resumido, como Jan
  • MMMMMM: Mês completo, como Janeiro
  • d: Dia numérico do mês, como 1 para 1 de junho
  • dd: Dia numérico do mês, como 01 para 1 de junho
  • DDD: Dia numérico do ano de 001 a 366, como 002 para 2 de janeiro
  • F: Dia numérico da semana em um mês, como 3 para a 3a segunda-feira de junho.
  • EEE ou E: Dia nomeado abreviado da semana, como Dom para domingo
  • EEEE: Dia da semana nomeado, como Domingo
  • HHH: formato de 24 horas de 00 a 23
  • H: formato de 0 a 23 horas
  • hh: formato de 12 horas de 01 a 12
  • h: formato de 12 horas de 1 a 12
  • mm: minutos de 00 a 59
  • ss: segundos de 00 a 59
  • SSS: milissegundos de 000 a 999
  • a: AM ou PM
  • z: fuso horário, como PDT

DATE_FORMAT(Date '2020-10-11', 'yyyy-MM-dd') retorna '2020-10-11'. O primeiro argumento é um objeto Date representando 11 de outubro de 2020.

DATE_FORMAT(Date '2018-junio-17', 'yyyy/MMMM/dd', 'es-ES') retorna '2018/junio/17'

DAYOFMONTH(date) Retorna o dia da data no mês. DAYOFMONTH('2020-12-25') retorna 25
DAYOFWEEK(date) Retorna o dia da data na semana. DAYOFWEEK('2020-12-25') retorna 6 para sexta-feira. Nos Estados Unidos, o domingo é considerado 1, a segunda-feira é 2 e assim por diante.
DAYOFYEAR(date) Retorna o dia da data no ano. DAYOFYEAR('2020-12-25') retorna 360
WEEKOFYEAR(date) Retorna a semana da data no ano.

WEEKOFYEAR('2022-07-28') retorna 30

WEEKOFYEAR('2022-07-28 13:24:30') retorna 30

HOUR(datetime) Retorna o valor da hora da data/hora. HOUR('2020-12-25 15:10:30') retorna 15
LAST_DAY(date) Retorna o último dia do mês da data. LAST_DAY('2020-12-25') retorna 31
MINUTE(datetime) Retorna o valor do minuto da data e hora. HOUR('2020-12-25 15:10:30') retorna 10
MONTH(date) Retorna o valor do mês da data. MONTH('2020-06-25') retorna 6
QUARTER(date) Retorna o trimestre do ano em que a data está. QUARTER('2020-12-25') retorna 4
SECOND(datetime) Retorna o valor de segundo da data e hora. SECOND('2020-12-25 15:10:30') retorna 30
TO_DATE(string, format_string[, localeStr]) Faz parsing da expressão de string com a expressão format_string para uma data. A configuração regional é opcional. O padrão é en-US. Tags de idioma suportadas.

Nas expressões do pipeline, format_string deve usar os códigos de formato strftime. Caso contrário, as strings de formato com distinção entre maiúscula/minúscula suportadas serão:

  • yy: ano com dois dígitos
  • yyyy: ano com quatro dígitos
  • M: Mês numérico, como 1 para janeiro
  • MM: Mês numérico, como 01 para janeiro
  • MMM: Mês resumido, como Jan
  • MMMMMM: Mês completo, como Janeiro
  • d: Dia numérico do mês, como 1 para 1 de junho
  • dd: Dia numérico do mês, como 01 para 1 de junho
  • DDD: Dia numérico do ano de 001 a 366, como 002 para 2 de janeiro
  • F: Dia numérico da semana em um mês, como 3 para a 3a segunda-feira de junho.
  • EEE ou E: Dia nomeado abreviado da semana, como Dom para domingo
  • EEEE: Dia da semana nomeado, como Domingo
  • HHH: formato de 24 horas de 00 a 23
  • H: formato de 0 a 23 horas
  • hh: formato de 12 horas de 01 a 12
  • h: formato de 12 horas de 1 a 12
  • mm: minutos de 00 a 59
  • ss: segundos de 00 a 59
  • SSS: milissegundos de 000 a 999
  • a: AM ou PM
  • z: fuso horário, como PDT

TO_DATE('31 December 2016', 'dd MMMM yyyy') retorna um valor de Data igual a 2016-12-31

TO_DATE('2018/junio/17', 'yyyy/MMMM/dd', 'es-ES') retorna um valor de Data igual a 2018-06-17

TO_TIMESTAMP(expr, format_string[, localeStr]) Converte um expr de VARCHAR em um valor de TIMESTAMP, com base no valor format_string e no valor localeStr opcional fornecidos.

Nas expressões do pipeline, format_string deve usar os códigos de formato strftime. Caso contrário, os padrões de formato suportados serão:

  • yy: ano com dois dígitos
  • yyyy: ano com quatro dígitos
  • M: Mês numérico, como 1 para janeiro
  • MM: Mês numérico, como 01 para janeiro
  • MMM: Mês resumido, como Jan
  • MMMMMM: Mês completo, como Janeiro
  • d: Dia numérico do mês, como 1 para 1 de junho
  • dd: Dia numérico do mês, como 01 para 1 de junho
  • DDD: Dia numérico do ano de 001 a 366, como 002 para 2 de janeiro
  • F: Dia numérico da semana em um mês, como 3 para a 3a segunda-feira de junho.
  • EEE ou E: Dia nomeado abreviado da semana, como Dom para domingo
  • EEEE: Dia da semana nomeado, como Domingo
  • HHH: formato de 24 horas de 00 a 23
  • H: formato de 0 a 23 horas
  • hh: formato de 12 horas de 01 a 12
  • h: formato de 12 horas de 1 a 12
  • mm: minutos de 00 a 59
  • ss: segundos de 00 a 59
  • SSS: milissegundos de 000 a 999
  • a: AM ou PM
  • z: fuso horário, como PDT
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') retorna um objeto TIMESTAMP que representa 11am 10:10 Oct 11th, 2020
WEEK(date)

Retorna o valor da semana da data.

WEEK('2020-06-25') retorna 4
YEAR(date) Retorna o valor do ano da data. YEAR('2020-06-25') retorna 2020
ADD_MONTHS(date_expr, number_months) Retorna a data após a adição do número especificado de meses à data, timestamp ou string especificada com um formato yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS.

ADD_MONTHS('2017-07-30', 1) retorna 2017-08-30

ADD_MONTHS('2017-07-30 09:07:21', 1) retorna 2017-08-30

MONTHS_BETWEEN(start_date_expr, end_date_expr)

Retorna o número de meses entre start_date_expr e end_date_expr. start_date_expr e end_date_expr podem ser uma data, um timestamp ou uma string com um formato yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Um número inteiro será retornado se as duas datas forem o mesmo dia do mês ou se ambas forem o último dia em seus respectivos meses. Caso contrário, a diferença será calculada com base em 31 dias por mês.

MONTHS_BETWEEN('2022-01-01', '2022-01-31') retorna 1

MONTHS_BETWEEN('2022-07-28', '2020-07-25') retorna 24

MONTHS_BETWEEN('2022-07-28 13:24:30', '2020-07-25 13:24:30') retorna 24

FROM_UTC_TIMESTAMP(time_stamp, time_zone)

Interpreta uma data, um timestamp ou uma string como horário UTC e converte esse horário em um timestamp no fuso horário especificado.

Para string, use um formato como: yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

O formato de fuso horário é um ID de zona baseado em região (por exemplo, 'área/cidade', como 'Asia/Seoul', ou um deslocamento de fuso horário (por exemplo, UTC+02).

FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') retorna 2017-07-14 03:40:00.0
TO_UTC_TIMESTAMP(time_stamp, time_zone)

Converte uma data, um timestamp ou uma string no fuso horário especificado em um timestamp UTC.

Para string, use um formato como: yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

O formato de fuso horário é um ID de zona baseado em região (por exemplo, 'área/cidade', como 'Asia/Seoul'), ou um deslocamento de fuso horário (por exemplo, UTC+02).

TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') retorna 2017-07-14 01:40:00.0
FROM_UNIXTIME(unix_time[, fmt])

Converte a época ou o horário especificado do Unix em uma string que representa o timestamp desse momento no fuso horário do sistema atual e no formato especificado.

Observação: O horário do Unix é o número de segundos decorridos desde 1o de janeiro de 1970 00:00:00 UTC.

Se fmt for omitido, o formato padrão será yyyy-MM-dd HH:mm:ss

FROM_UNIXTIME(1255033470) retorna '2009-10-08 13:24:30'

FROM_UNIXTIME(1637258854) retorna '2021-11-18 10:07:34'

O fuso horário padrão é PST nos exemplos

UNIX_TIMESTAMP([time_expr[, fmt]])

Converte o horário atual ou especificado em um timestamp do Unix em segundos.

time_expr é uma data, um timestamp ou uma string com um formato yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Se time_expr não for informado, o horário atual será convertido.

Se time_expr for uma string e fmt for omitido, o padrão será yyyy-MM-dd HH:mm:ss

UNIX_TIMESTAMP('1970-01-01 00:00:00', 'yyyy-MM-dd HH:mm:ss') retorna 28800

O fuso horário padrão é PST neste exemplo

INTERVAL 'year' YEAR[(year_precision)]

Retorna um período em anos.

year_precision é o número de dígitos no campo year; ele varia de 0 a 9. Se year_precision for omitido, o padrão será 2 (deve ser menor que 100 anos).

INTERVAL '1' YEAR retorna um intervalo de 1 ano

INTERVAL '200' YEAR(3) retorna um intervalo de 200 anos

INTERVAL 'year month' YEAR[(year_precision)] TO MONTH

Retorna um período em anos e meses. Use para armazenar um período usando os campos year e month.

year_precision é o número de dígitos no campo year; ele varia de 0 a 9. Se year_precision for omitido, o padrão será 2 (deve ser menor que 100 anos).

INTERVAL '100-5' YEAR(3) TO MONTH retorna um intervalo de 100 anos e 5 meses. Especifique a precisão do ano principal de 3.
INTERVAL 'month' MONTH[(month_precision)]

Retorna um período em meses.

month_precision é o número de dígitos no campo mês; ele varia de 0 a 9. Se month_precision for omitido, o padrão será 2 (deve ser menor que 100 anos).

INTERVAL '200' MONTH(3) retorna um intervalo de 200 meses. Especifique a precisão do mês de 3.
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)]

Retorna um período em termos de dias, horas, minutos e segundos.

day_precision é o número de dígitos no campo day; ele varia de 0 a 9. O padrão é 2.

fractional_seconds_precision é o número de dígitos na parte fracionária do valor do segundo no campo time; ele varia de 0 a 9.

INTERVAL '11 10:09:08.555' DAY TO SECOND(3) retorna um intervalo de 11 dias, 10 horas, 09 minutos, 08 segundos e 555 milésimos de segundo
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)]

Retorna um período em termos de dias, horas e minutos.

day_precision é o número de dígitos no campo day; ele varia de 0 a 9. O padrão é 2.

minute_precision é o número de dígitos no campo minute; ele varia de 0 a 2. O padrão é 2.

INTERVAL '11 10:09' DAY TO MINUTE retorna um intervalo de 11 dias, 10 horas e 09 minutos
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)]

Retorna um período em termos de dias e horas.

day_precision é o número de dígitos no campo day; ele varia de 0 a 9. O padrão é 2.

hour_precision é o número de dígitos no campo hora; ele varia de 0 a 2. O padrão é 2.

INTERVAL '100 10' DAY(3) TO HOUR retorna um intervalo de 100 dias e 10 horas
INTERVAL 'day' DAY[(day_precision)]

Retorna um período em termos de dias.

day_precision é o número de dígitos no campo day; ele varia de 0 a 9. O padrão é 2.

INTERVAL '999' DAY(3) retorna um intervalo de 999 dias
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)]

Retorna um período em termos de horas, minutos e segundos.

hour_precision é o número de dígitos no campo hora; ele varia de 0 a 2. O padrão é 2.

fractional_seconds_precision é o número de dígitos na parte fracionária do valor do segundo no campo time; ele varia de 0 a 9.

INTERVAL '09:08:07.6666666' HOUR TO SECOND(7) retorna um intervalo de 9 horas, 08 minutos e 7.6666666 segundos
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)]

Retorna um período em termos de horas e minutos.

hour_precision é o número de dígitos no campo hora; ele varia de 0 a 2. O padrão é 2.

minute_precision é o número de dígitos no campo minute; ele varia de 0 a 2. O padrão é 2.

INTERVAL '09:30' HOUR TO MINUTE retorna um intervalo de 9 horas e 30 minutos
INTERVAL 'hour' HOUR[(hour_precision)]

Retorna um período em termos de horas.

hour_precision é o número de dígitos no campo hora; ele varia de 0 a 2. O padrão é 2.

INTERVAL '40' HOUR retorna um intervalo de 40 horas
INTERVAL 'minute' MINUTE[(minute_precision)]

Retorna um período em termos de minutos.

minute_precision é o número de dígitos no campo minute; ele varia de 0 a 2. O padrão é 2.

INTERVAL '15' MINUTE retorna um intervalo de 15 minutos
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)]

Retorna um período em termos de minutos e segundos.

minute_precision é o número de dígitos no campo minute; ele varia de 0 a 2. O padrão é 2.

fractional_seconds_precision é o número de dígitos na parte fracionária do valor do segundo no campo time; ele varia de 0 a 9.

INTERVAL '15:30' MINUTE TO SECOND retorna um intervalo de 15 minutos e 30 segundos
INTERVAL 'second' SECOND[(fractional_seconds_precision)]

Retorna um período em termos de segundos.

fractional_seconds_precision é o número de dígitos na parte fracional do campo segundo; ele varia de 0 a 9. O padrão é 3.

INTERVAL '15.678' SECOND retorna um intervalo de 15,678 segundos
Funções Analíticas
Função Descrição Exemplo
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) Retorna o valor avaliado na linha que é a primeira do quadro da janela. FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) retorna o primeiro valor BANK_ID em uma janela na qual as linhas são calculadas como linha atual e 1 linha após essa linha, particionadas por BANK_ID e em ordem crescente de BANK_NAME.
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) Retorna o valor avaliado na linha em um determinado deslocamento antes da linha atual dentro da partição. Se não houver essa linha, o valor padrão será retornado. O deslocamento e o padrão são avaliados em relação à linha atual. Se omitido, o desvio é padronizado como 1 e o padrão é NULL. LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) retorna o valor BANK_ID da segunda linha antes da linha atual, particionada por BANK_ID e em ordem decrescente de BANK_NAME. Se não houver esse valor, hello será retornado.
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) Retorna o valor avaliado na linha que é a última do quadro da janela. LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) retorna o último valor BANK_ID em uma janela na qual as linhas são calculadas como a linha atual e 1 linha após essa linha, particionada por BANK_ID e em ordem crescente de BANK_NAME.
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) Retorna o valor avaliado na linha em um determinado deslocamento após a linha atual dentro da partição. Se não houver essa linha, o valor padrão será retornado. O deslocamento e o padrão são avaliados em relação à linha atual. Se omitido, o desvio é padronizado como 1 e o padrão é NULL. LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retorna o valor BANK_ID da segunda linha após a linha atual, particionada por BANK_ID e em ordem crescente de BANK_NAME. Se não houver esse valor, hello será retornado.
RANK() OVER([ partition_clause ] order_by_clause) Retorna a classificação da linha atual com lacunas, contando a partir de 1. RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retorna a classificação de cada linha dentro do grupo de partições de BANK_ID, em ordem crescente de BANK_NAME.
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) Retorna o número exclusivo da linha atual dentro de sua partição, contando a partir de 1. ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retorna o número de linha exclusivo de cada linha dentro do grupo de partições de BANK_ID, em ordem crescente de BANK_NAME.
Funções da String
FunçõesDescriçãoExemplo
CAST(value AS type)Retorna o valor especificado no tipo especificado.CAST("10" AS INT) retorna 10
CONCAT(string, string)Retorna os valores combinados de strings ou colunas.CONCAT('Oracle','SQL') retorna OracleSQL
CONCAT_WS(separator, expression1, expression2, expression3,...) Retorna os valores combinados de strings ou colunas usando o separador especificado entre as strings ou colunas.

Um separador é obrigatório e deve ser uma string.

Pelo menos uma expressão deve ser fornecida após o separador. Por exemplo: CONCAT_WS(',' col1)

CONCAT_WS('-', 'Hello', 'Oracle') retorna Hello-Oracle

CONCAT_WS(' ', address, city, postal_code) retorna 123 MyCity 987654

Se um filho da função for um array, o array será nivelado:

CONCAT_WS(',', 1,2,3, to_array(4,5,6), to_array(7,8), 9) retorna 1,2,3,4,5,6,7,8,9

INITCAP(string)Retorna a string com a primeira letra de cada palavra em maiúscula, enquanto todas as outras letras ficam em minúsculas e cada palavra é delimitada por um espaço em branco.INITCAP('oRACLE sql') retorna Oracle Sql
INSTR(string, substring[start_position])Retorna o índice (baseado em 1) da primeira ocorrência de substring em string.INSTR('OracleSQL', 'SQL') retorna 7
LOWER(string)Retorna a string com todas as letras alteradas para minúsculas.LOWER('ORACLE') retorna oracle
LENGTH(string)Retorna o tamanho do caractere da string ou o número de bytes de dados binários. O tamanho da string inclui espaços à direita.LENGTH('Oracle') retorna 6
LTRIM(string)Retorna a string com espaços à esquerda removidos.LTRIM(' Oracle')
NVL(expr1, epxr2)Retorna o argumento que não é nulo.NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID())
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx])Pesquisa e extrai a string que corresponde a um padrão de expressão regular da string de entrada. Se o índice do grupo de captura opcional for informado, a função extrairá o grupo específico.

REGEXP_SUBSTR('https://www.oracle.com/products', 'https://([[:alnum:]]+\.?){3,4}/?') retorna https://www.oracle.com

REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) retorna 22
REPLACE(string, search, replacement)Substitui todas as ocorrências de search por replacement.

Se search não for encontrado na string, ela será retornada inalterada.

Se replacement não for especificado ou for uma string vazia, nada substituirá search que é removido de string.

REPLACE('ABCabc', 'abc', 'DEF') retorna ABCDEF
RTRIM(string)Retorna a string com espaços à esquerda removidos da direita.RTRIM('Oracle ')
SUBSTRING(string, position[, substring_length])Retorna a substring que começa na posição. SUBSTRING('Oracle SQL' FROM 2 FOR 3) returns rac
Para números, TO_CHAR(expr) e datas TO_CHAR(expr, format[, locale])Converte números e datas em strings. Para números, nenhum formato é necessário. Para datas, use o mesmo formato que DATE_FORMAT descrito em Funções de Data e Hora. A configuração regional padrão é en-US. Consulte tags de idioma suportadas.

Nas expressões do pipeline, format_string deve usar os códigos de formato strftime. Caso contrário, os padrões de formato de data suportados são:

  • yy: ano com dois dígitos
  • yyyy: ano com quatro dígitos
  • M: Mês numérico, como 1 para janeiro
  • MM: Mês numérico, como 01 para janeiro
  • MMM: Mês resumido, como Jan
  • MMMMMM: Mês completo, como Janeiro
  • d: Dia numérico do mês, como 1 para 1 de junho
  • dd: Dia numérico do mês, como 01 para 1 de junho
  • DDD: Dia numérico do ano de 001 a 366, como 002 para 2 de janeiro
  • F: Dia numérico da semana em um mês, como 3 para a 3a segunda-feira de junho.
  • EEE ou E: Dia nomeado abreviado da semana, como Dom para domingo
  • EEEE: Dia da semana nomeado, como Domingo
  • HHH: formato de 24 horas de 00 a 23
  • H: formato de 0 a 23 horas
  • hh: formato de 12 horas de 01 a 12
  • h: formato de 12 horas de 1 a 12
  • mm: minutos de 00 a 59
  • ss: segundos de 00 a 59
  • SSS: milissegundos de 000 a 999
  • a: AM ou PM
  • z: fuso horário, como PDT

Exemplo de número: TO_CHAR(123) retorna 123

Exemplo de data: TO_CHAR(Date '2020-10-30', 'yyyy.MM.dd', 'en-US') retorna a string 2020.10.30. O primeiro argumento é um objeto Date representando 30 de outubro de 2020.

UPPER(string)Retorna uma string com todas as letras alteradas para maiúsculas.UPPER('oracle') retorna ORACLE
LPAD(str, len[, pad])Retorna uma string preenchida à esquerda com caracteres especificados para um determinado tamanho. Se o caractere pad for omitido, o padrão será um espaço.LPAD('ABC', 5, '*') retorna '**ABC'
RPAD(str, len[, pad])Retorna uma string preenchida à direita com caracteres especificados para um determinado tamanho. Se o caractere pad for omitido, o padrão será um espaço.RPAD('XYZ', 6, '+' ) returns 'XYZ+++'
Funções do Operador (Comparação)
FunçãoDescriçãoExemplo
CASE WHEN condition1 THEN result1 ELSE result2 ENDRetorna o valor cuja condição é atendida.CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END retorna ABC se 1> 0; caso contrário, retorna XYZ
ANDO operador lógico AND. Retorna verdadeiro se os dois operandos forem verdadeiros; caso contrário, retorna falso.(x = 10 AND y = 20) retorna "true" se x for igual a 10 e y for igual a 20. Se um dos dois não for verdadeiro, retornará "false"
ORO operador lógico OR. Retorna verdadeiro se um operando for verdadeiro ou ambos forem verdadeiros; caso contrário, retorna falso.(x = 10 OR y = 20) retorna "false" se x não for igual a 10 e também y não for igual a 20. Se um for verdadeiro, retornará "true"
NOTO operador lógico NOT.
LIKEExecuta correspondência de padrão de string, se string1 corresponder ao padrão em string2.
=Verifica a igualdade. Retorna verdadeiro se expr1 for igual a expr2; caso contrário, retorna falso.x = 10 retorna "true" quando o valor de x é 10, caso contrário, retorna "false"
!=Verifica a desigualdade. Retorna verdadeiro se expr1 não for igual a expr2; caso contrário, retorna falso.x != 10 retorna "false" se o valor de x for 10, caso contrário, retorna "true"
>Verifica uma expressão maior que. Retorna verdadeiro se expr1 for maior que expr2.x > 10 retorna "true" se o valor de x for maior que 10, caso contrário, retorna "false"
>=Testa uma expressão maior que ou igual a. Retorna verdadeiro se expr1 for maior ou igual a expr2.x > =10 retorna "true" se o valor de x for maior ou igual a 10, caso contrário, retorna "false"
<Testa uma expressão menor que. Retorna verdadeiro se expr1 for menor que expr2.x < 10 retorna "true" se o valor de x for menor que 10, caso contrário, retornará "false"
<=Testa uma expressão menor que ou igual a. Retorna verdadeiro se expr1 for menor ou igual a expr2.x <= 10 retorna "true" se o valor de x for menor que 10, caso contrário, retorna "false"
||Concatena duas strings.'XYZ' || 'hello' retorna 'XYZhello'
BETWEENAvalia um intervalo.FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007
INTesta se uma expressão corresponde a uma lista de valores.FILTER_2.ORDERS.ORDER_ID IN (1003, 1007)
Funções de ID Exclusivo
FunçãoDescriçãoExemplo
NUMERIC_ID()Gera um identificador exclusivo universal que é um número de 64 bits para cada linha.NUMERIC_ID() retorna, por exemplo, 3458761969522180096 e 3458762008176885761
ROWID()Gera números monotonicamente crescentes de 64 bits.ROWID() retorna, por exemplo, 0, 1, 2 e assim por diante
UUID()Gera um identificador exclusivo universal que é uma String de 128 bit para cada linha.UUID() retorna, por exemplo, 20d45c2f-0d56-4356-8910-162f4f40fb6d
MONOTONICALLY_INCREASING_ID() Gera inteiros exclusivos e monotonicamente crescentes de 64 bits que são números não consecutivos. MONOTONICALLY_INCREASING_ID() retorna, por exemplo, 8589934592 e 25769803776
Funções Condicionais
FunçãoDescriçãoExemplo
COALESCE(value, value [, value]*)Retorna o primeiro argumento não nulo, se ele existir; caso contrário, retorna um nulo.COALESCE(NULL, 1, NULL) retorna 1
NULLIF(value, value)Retorna nulo se os dois valores forem iguais, caso contrário, retorna o primeiro valor.NULLIF('ABC','XYZ') retorna ABC
Funções Hierárquicas
FunçãoDescriçãoExemplo
SCHEMA_OF_JSON(string)Faz parsing de uma string JSON e infere o esquema no formato DDL.

SCHEMA_OF_JSON('[{\"Zipcode\":704,\"ZipCodeType\":\"STANDARD\",\"City\":\"ORACLECITY\",\"State\":\"OC\"}]') retorna 'ARRAY<STRUCT<City:string,State:string,ZipCodeType:string,Zipcode:bigint>>'

SCHEMA_OF_JSON('[{\"col\":0}]') retorna 'ARRAY<STRUCT<col: BIGINT>>'

FROM_JSON(column, string)

Faz parsing de uma coluna que contém uma string JSON em um dos tipos a seguir, com o esquema especificado.

  • Map, com String como tipo de chave
  • Struct
  • Array

FROM_JSON('{\"Zipcode\":704,\"City\":\"ORACLE CITY\"}', 'STRUCT<Zipcode: BIGINT, City: STRING>') retorna uma coluna de tipo Struct com o esquema especificado: {704, ORACLE CITY}

FROM_JSON('{\"a\":1, \"b\":0.8}', 'STRUCT<a: BIGINT, b: DOUBLE>') retorna uma coluna de tipo Struct com o esquema especificado: {1, 0.8}

TO_JSON(column)Converte uma coluna que contém um tipo Struct ou Array de Structs ou um tipo Map ou Array de Map em uma string JSON.TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) retorna uma string JSON {"s1":[1,2,3],"s2":{"key":"value"}}
TO_MAP(string,column[,string,column]*)Cria uma nova coluna do tipo Map. As colunas de entrada devem ser agrupadas como pares de chave/valor. As colunas de chave de entrada não podem ser nulas e devem ter todas o mesmo tipo de dados. As colunas de valor de entrada devem todas ter o mesmo tipo de dados.

TO_MAP('Ename',Expression_1.attribute1) retorna uma coluna de tipo Map: {"ENAME" -> 100}

TO_MAP('block', EXPRESSION_1.MYSOURCE.address.block, 'unit', EXPRESSION_1.MYSOURCE.address.unit) retorna uma coluna de tipo Map: {"block" -> 1,"unit" -> 1}

TO_STRUCT(string,column[,string,column]*)Cria uma nova coluna do tipo Struct. As colunas de entrada devem ser agrupadas como pares de chave/valor.

TO_STRUCT('Ename',Expression_1.attribute1) retorna {100}

TO_STRUCT('Id',Expression_1.attribute1, 'Name', Expression_1.attribute2) retorna {100, "John"}

TO_ARRAY(column[,column]*)Cria uma nova coluna como tipo Array. As colunas de entrada devem todas ter o mesmo tipo de dados.

TO_Array(Expression_1.attribute1) retorna [100]

TO_ARRAY(EXPRESSION_1.attribute2,EXPRESSION_1.attribute3) retorna ["John","Friend"]

Funções de Ordem Superior

Os operadores de fluxo de dados que suportam a criação de expressões e tipos de dados hierárquicos podem usar funções de ordem superior.

Estes são os operadores suportados:

  • Agregado

  • Expressão

  • Filtro

  • Associar

  • Lookup

  • Divisão

  • Deslocar

FunçãoDescriçãoExemplo
TRANSFORM(column, lambda_function)Recebe uma matriz e uma função anônima e configura uma nova matriz aplicando a função a cada elemento e atribuindo o resultado à matriz de saída.Para um array de entrada de inteiros [1, 2, 3], TRANSFORM(array, x -> x + 1) retorna um novo array de [2, 3, 4].
TRANSFORM_KEYS(column, lambda_function)Usa um mapa e uma função com 2 argumentos (chave e valor) e retorna um mapa no qual as chaves têm o tipo do resultado da função lambda, e os valores têm o tipo dos valores de mapa da coluna.Para um mapa de entrada com chaves inteiras e valores de string {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'}, TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) retorna um novo mapa de {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'}.
TRANSFORM_VALUES(column, lambda_function)Usa um mapa e uma função com 2 argumentos (chave e valor) e retorna um mapa no qual os valores têm o tipo do resultado das funções lambda, e as chaves têm o tipo das chaves de mapa de coluna. Para um mapa de entrada com chaves de string e valores de string {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'}, TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) retorna um novo mapa de {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'}.
ARRAY_SORT(array(...), lambda_function)

Somente o operador de Expressão suporta ARRAY_SORT.

Recebe uma matriz e classifica de acordo com a função fornecida que recebe 2 argumentos.

A função deve retornar -1, 0 ou 1, dependendo de o primeiro elemento ser menor que, igual a ou maior que o segundo elemento.

Se a função for omitida, a matriz será classificada em ordem crescente.

array_sort(to_array(5, 6, 1),
                   (left, right) -> CASE WHEN left < right THEN -1
                                         WHEN left > right THEN 1 ELSE 0 END)

A matriz retornada é:

[1,5,6]
Editando condições de divisão

Você pode editar qualquer condição de divisão, exceto a condição Sem Correspondência.

  1. Na tela do designer, selecione o operador de divisão da condição que você deseja alterar.
    A guia Detalhes do operador de divisão é exibida no painel Propriedades. Na tela, você pode expandir e contrair o ícone do operador para mostrar e ocultar as condições de divisão existentes.
  2. Na guia Detalhes, em Condições de divisão, selecione Editar no menu Ações (Ações menu) ao lado da condição de divisão que você deseja alterar.
  3. No painel Editar condição de divisão, edite o valor Identificador ou deixe-o como está.
  4. Na seção Criador de condições, você pode clicar duas vezes para selecionar ou arrastar atributos ou funções de entrada para o editor para criar a condição. Você também pode editar a expressão de condição manualmente no editor e validar a condição antes de salvá-la.
  5. Selecione Salvar alterações.
Alterando a sequência de condições de divisão

Você pode mover uma condição de divisão para cima ou para baixo na sequência. Apenas a condição Sem Correspondência não pode ser movida.

  1. Na tela do designer, selecione o operador de divisão que tem a sequência de condições que você deseja alterar.
    A guia Detalhes do operador de divisão é exibida no painel Propriedades. Na tela, você pode expandir e contrair o ícone do operador para mostrar e ocultar as condições de divisão existentes.
  2. Na guia Detalhes, em Condições de divisão, verifique a sequência de condições de divisão.
  3. Ao lado de uma linha de condição, no menu Ações (Ações menu), selecione a ação para mover essa condição para cima ou para baixo na sequência.
    Observe que a posição da condição no ícone do operador de divisão expandido na tela muda conforme você move uma condição.
Excluindo condições de divisão

É possível excluir qualquer condição de divisão, exceto a condição Sem Correspondência.

  1. Na tela do designer, selecione o operador de divisão da condição que você deseja excluir.
    A guia Detalhes do operador de divisão é exibida no painel Propriedades. Na tela, você pode expandir e contrair o ícone do operador para mostrar e ocultar as condições de divisão.
  2. Na guia Detalhes, em Condições de divisão, selecione Excluir no menu (Ações menu) ao lado da condição que você deseja excluir.
  3. Para excluir duas ou mais condições, use a coluna ao lado da coluna Sequência para selecionar as condições e selecione Excluir.
  4. Se a porta de saída de uma condição excluída estiver conectada a outro operador ou destino, verifique o fluxo de dados e faça as alterações necessárias após a exclusão das condições.

Operador Dinâmico

O operador dinâmico permite que você obtenha valores de linha exclusivos de um atributo em uma origem de entrada e gire os valores em vários atributos na saída.

Usando a entrada de várias linhas, a operação dinâmica executa uma transformação com base nas expressões de função de agregação e nos valores de um atributo que você especifica como chave dinâmica. O resultado de uma operação dinâmica é uma saída dinâmica ou reorganizada de linhas e atributos.

O número de linhas na saída se baseia na seleção de atributos pelos quais agrupar.

  • Se você especificar um ou mais atributos pelos quais agrupar, as linhas de entrada que tiverem o mesmo valor de atributo agrupar por serão agrupadas em uma linha. Por exemplo, se você especificar um atributo agrupar por que tenha quatro valores exclusivos, os dados de entrada serão transformados e agrupados em quatro linhas na saída.
  • Se você não especificar atributos pelos quais agrupar, todos os dados de entrada serão transformados em uma única linha de saída.

O número de atributos na saída é:

  • Baseado no número de atributos que você seleciona para agrupar por
  • Um múltiplo do número de valores selecionado na chave dinâmica
  • Um resultado do número de atributos que as expressões de função de agregação transformam

Por exemplo, se você selecionar um atributo agrupar por e três valores de chave dinâmica e adicionar uma expressão que transforme dois atributos, o número de atributos na saída será:

1 + (3 * 2)

O número total de atributos na saída dinâmica resultante é calculado da seguinte forma:

Number of group by attributes + (Number of pivot key values * Number of attributes that are transformed from expressions)

Os nomes de novos atributos na saída são derivados de um padrão adicionado para atributos de destino quando você cria as expressões.

As funções de agregação usadas com um operador dinâmico determinam os valores dinâmicos na saída. Se nenhum dado for encontrado, é inserido um valor nulo onde se espera um valor dinâmico.

Exemplo de valor dinâmico

Considere a entidade de dados PRODUCT_SALES, que tem os atributos STORE, PRODUCT e SALES. A entidade de dados tem cinco linhas. Você deseja criar um valor dinâmico no atributo PRODUCT com uma função SUM de agregação em SALES.

Você especifica o agrupamento de linhas dinâmicas pelo atributo STORE. Cada valor STORE exclusivo se torna uma linha na saída resultante. As linhas de entrada com o mesmo valor agrupar por são agrupadas na mesma linha na saída dinâmica. Se você não especificar um atributo agrupar por, todas as linhas de entrada serão transformadas em uma única linha na saída resultante.

Especifique PRODUCT como chave dinâmica e selecione os três valores para transformar em novos atributos na saída resultante.

A expressão de função SUM de agregação em SALES é:

SUM(PIVOT_1_1.PRODUCT_SALES.SALES)

O padrão para atributos de destino é:

%PIVOT_KEY_VALUE%
Entidade de Dados PRODUCT_SALES
STOREPRODUCTSALES
AB StoreTelevision2
AB StoreTelevision4
Country-StoreTelevision6
Country-StoreRefrigerator8
E-StoreCoffee maker10
Saída Dinâmica: Agrupar por STORE, Chave Dinâmica PRODUCT
STORETELEVISIONREFRIGERATORCOFFEE MAKER
AB-Store6--
Country-Store68-
E-Store--10
Saída Dinâmica: Sem Agrupar por, Chave Dinâmica PRODUCT
TELEVISIONREFRIGERATORCOFFEE MAKER
12810
Adicionando e configurando um operador dinâmico

O operador dinâmico executa uma transformação usando uma ou mais expressões de função de agregação em um ou mais valores de um atributo que você especifica como chave dinâmica.

Você pode optar por agrupar as linhas dinâmicas em uma única linha ou selecionar atributos para criar várias linhas de saída com base no mesmo valor agrupar por.

  1. No painel Operadores, arraste um operador Dinâmico para a tela.
  2. Com o operador dinâmico focalizado, na guia Detalhes do painel Propriedades, digite um nome no campo Identificador ou deixe o nome como está.
  3. (Opcional) Para Agrupar por, especifique os atributos cujos valores distintos são usados para organizar os dados dinâmicos em linhas agrupadas. Por padrão, todas as linhas de entrada são agregadas e agrupadas em uma só linha, a menos que você especifique um ou mais atributos pelos quais agrupar as linhas.
    • Selecione Atributos e, em seguida, selecione um ou mais atributos para agrupar linhas dinâmicas pelo mesmo valor. Por exemplo, se você selecionar um atributo que tenha dois valores exclusivos, a saída resultante terá duas linhas de dados agregados.
    • Selecione Padrão para usar um padrão de expressão regular para selecionar os atributos pelos quais agrupar. Somente os atributos que correspondem ao padrão são usados para agrupar linhas dinâmicas pelo mesmo valor.
  4. Para chave dinâmica, selecione o atributo cujos valores podem ser usados como novos atributos na saída dinâmica. Somente os atributos do tipo VARCHAR, INTEGER, FLOAT ou BOOLEAN podem ser usados como a chave dinâmica.
  5. Em Valores de chave dinâmica, selecione Adicionar valores de chave para selecionar um ou mais valores a partir da chave dinâmica selecionado que você deseja tornar atributos dinamicados na saída. É possível selecionar até 50 valores.

    É possível usar um alias para um valor de chave dinâmica selecionado. Um alias não pode começar com um número. Somente o caractere especial _ é permitido.

    Para usar um alias para um valor de chave dinâmica selecionado, selecione Editar no menu (Ações menu) Ações desse valor de chave. No painel Editar Alias da Chave Dinâmica, digite o alias para o valor da chave.

    Para excluir um valor de chave dinâmica da lista selecionada, marque a caixa de seleção ao lado dela e selecione Excluir. Como alternativa, você pode selecionar Excluir no menu Ações (Menu Ações).

  6. Em Expressões, selecione Adicionar expressão para adicionar as expressões de função de agregação. Consulte Adicionando uma expressão dinâmica.
  7. Na guia Atributos, selecione para exibir atributos de entrada ou saída. Os atributos de entrada são vinculados ao operador no lado esquerdo. Os atributos de saída são vinculados ao operador no lado direito e vão para o operador seguinte.

    Você pode selecionar atributos individuais ou usar ícones de filtro para filtrar a lista de atributos. Em seguida, aplique as regras de exclusão em massa aos atributos selecionados ou filtrados.

    • Selecione o ícone de filtro na coluna Nome para filtrar atributos por um padrão de nome. No campo de filtro, digite uma expressão regular simples. Você pode usar os curingas ? e * no padrão regex.
    • Selecione o ícone de filtro na coluna Tipo para filtrar atributos por um tipo de dados. Use o menu para selecionar o tipo a ser usado como filtro.
      Observação

      Você só pode aplicar um filtro de padrão de nome, mas vários filtros de tipo por vez. Por exemplo, para filtrar pelo padrão de nome *_CODE e pelo tipo numérico ou varchar, você aplica um filtro de padrão de nome (*_CODE) e dois filtros de tipo (numérico, varchar).
    • Use o menu Ações para aplicar regras de exclusão em massa aos atributos selecionados ou filtrados. Selecione Excluir por seleção ou Excluir por filtro aplicado.
    • Selecione Verificar regras para abrir o painel Regras. Você pode exibir e gerenciar as regras que foram aplicadas à entidade de dados. Por padrão, a primeira regra no painel Regras inclui tudo.

    Um tipo complexo é mostrado como ARRAY (data type), COMPOSITE ou MAP (key type, value type). Consulte Tipos de Dados Hierárquicos para entender o que é suportado para tipos complexos.

  8. Na guia Dados, exiba uma amostra dos dados, com base na configuração do operador e em quaisquer regras aplicadas na guia Atributos.

    O Perfil de Dados não é exibido para atributos de dados complexos. Para atributos de dados complexos, para exibir a hierarquia da estrutura de dados em uma estrutura simplificada, selecione os dados complexos mostrados. Por exemplo, [...] ou {…}.

    Você pode aplicar transformações a atributos individuais ou fazer uma transformação em massa em um grupo de atributos.

    Para entidades com tipos de dados hierárquicos, consulte Tipos de Dados Hierárquicos para entender o que é suportado.

  9. Na guia Validação, verifique advertências ou erros que possam causar falha no fluxo de dados.
Adicionando uma expressão dinâmica

Uma ou mais expressões de função de agregação são necessárias para um operador dinâmico.

  1. Com o operador de tabela dinâmica selecionado na tela do fluxo de dados, em Expressões no painel de propriedades, selecione Adicionar expressão.

  2. No painel Adicionar Expressão, digite um nome para a expressão no campo Identifier ou deixe o nome como está.

  3. (Opcional) Para usar um padrão a fim de aplicar uma expressão a vários atributos de origem, selecione Permitir seleção em massa.

    Por exemplo, suponha que você tenha dois atributos DISCOUNT_ no conjunto de dados (DISCOUNT_VALUE e DISCOUNT_RATE) e queira aplicar a função MAX a ambos.

    1. Em Atributos de Origem, selecione Padrão e Adicionar padrão.

    2. No painel Adicionar Padrão de Origem, adicione um padrão para selecionar um grupo de atributos de origem que tenham nomes que comecem com DISCOUNT_. Por exemplo, digite DISCOUNT* e selecione Adicionar. Em seguida, selecione o Tipo de dados.

    3. Em Atributos de destino, use um padrão para os nomes de atributo de saída resultantes.

      Por definição, o padrão %MACRO_INPUT%_%PIVOT_KEY_VALUE% já foi inserido para você. %MACRO_INPUT% corresponde aos nomes dos atributos de origens selecionados pelo padrão adicionado. %PIVOT_KEY_VALUE% corresponde aos valores selecionados na chave dinâmica.

      Por exemplo, se %PIVOT_KEY_VALUE% indicar TELEVISION e %MACRO_INPUT% indicar DISCOUNT_VALUE e DISCOUNT_RATE, na saída, os atributos dinâmicos serão <pivot_name>.<expression_name>.DISCOUNT_VALUE_TELEVISION e <pivot_name>.<expression_name>.DISCOUNT_RATE_TELEVISION.

    4. Você pode manter a seleção Usar tipos de dados de atributo de origem. Caso contrário, em Tipo de dados de expressão, selecione o Tipo de dados e preencha os campos correspondentes ao tipo selecionado.
  4. Se você não selecionou Permitir seleção em lote, em Atributos de destino, use um padrão para os nomes de atributo de saída resultantes.

    Por definição, o padrão %PIVOT_KEY_VALUE% já foi inserido para você. %PIVOT_KEY_VALUE% corresponde aos valores selecionados na chave dinâmica.

    Por exemplo, se %PIVOT_KEY_VALUE% indicar TELEVISION e TELEPHONE, na saída, os atributos dinâmicos serão <pivot_name>.<expression_name>.TELEVISION e <pivot_name>.<expression_name>.TELEPHONE.

    Em Tipo de dados de expressão, selecione o Tipo de dados e preencha os campos correspondentes ao tipo selecionado.

  5. Na seção Expression builder, clique duas vezes ou arraste os atributos, os parâmetros e as funções de agregação de entrada para adicionar ao editor e criar a expressão. Você mesmo também pode criar a expressão manualmente e validá-la.

    A tabela a seguir mostra a lista de funções de agregação disponíveis para a construção de expressões dinâmicas.

    FunçãoDescriçãoExemplo
    COUNT(value[, value]*)Retorna o número de linhas para as quais uma ou mais expressões fornecidas são todas não nulas.COUNT(expr1)
    COUNT(*)Retorna o número total de linhas recuperadas, incluindo linhas contendo nulos.COUNT(*)
    MAX(value)Retorna o valor máximo do argumento.MAX(expr)
    MIN(value)Retorna o valor mínimo do argumento.MIN(expr)
    SUM(numeric)Retorna a soma calculada com base nos valores de um grupo.SUM(expr1)

    Você também pode usar funções de ordem superior (transformação) em uma expressão dinâmica.

  6. Para construir uma expressão dinâmica, especifique o(s) atributo(s) e a função de agregação.

    • Se você selecionou Permitir seleção em massa, use %MACRO_INPUT% na expressão para indicar os atributos nos quais a função deve ser aplicada.

      Por exemplo, se você usou o padrão DISCOUNT* para correspondência dos atributos de origem DISCOUNT_RATE e DISCOUNT_VALUE, será possível especificar uma função de agregação como SUM(numeric) para aplicar a função em todos os atributos que correspondem ao padrão. %MACRO_INPUT% substitui o espaço reservado numeric na função:

      SUM(%MACRO_INPUT%)
    • Se você não selecionou Permitir seleção em massa, especifique o atributo na função.

      Por exemplo, a entidade de dados é PRODUCT_SALES e você deseja usar uma função SUM de agregação no atributo SALES. Você pode especificar a função, como SUM(numeric), substituindo o espaço reservado numeric na função pelo nome do atributo:

      SUM(PIVOT_1_1.PRODUCT_SALES.SALES)
    • Você pode usar um parâmetro de expressão para o nome da função de agregação na expressão dinâmica. Um parâmetro de expressão tem um nome, um tipo e um valor padrão.

      Por exemplo, o parâmetro de expressão P_VARCHAR tem o tipo VARCHAR e MIN como valor padrão. Você pode especificar a função de agregação como:

      $P_VARCHAR(%MACRO_INPUT%)
      $P_VARCHAR(PIVOT_1_1.PRODUCT_SALES.SALES)
  7. No painel Adicionar Expressão, selecione Adicionar.

Operador de Lookup

O operador de lookup executa uma consulta e transformação usando uma condição de lookup e a entrada de duas origens, uma de entrada principal e uma de entrada de lookup.

A operação de consulta usa a condição e um valor na entrada principal para localizar linhas na origem de lookup. A transformação anexa atributos da origem de lookup à origem principal.

Você pode especificar a ação a ser tomada quando várias linhas e nenhuma forem retornadas pela consulta de lookup. Por exemplo, você pode especificar que a ação seja ignorar linhas não correspondentes e retornar qualquer linha correspondente quando houver diversas linhas correspondentes.

A saída resultante é uma combinação de ambas as origens de entrada com base na condição de lookup, um valor na entrada principal e as ações preferenciais a serem executadas. A entrada principal determina a ordem de atributos e linhas na saída, com os atributos da entrada principal colocados antes dos atributos da entrada de lookup.

Exemplo de lookup

Considere duas entidades de dados de origem em um fluxo de dados. A entidade de dados 1 (PAYMENTS) é definida como entrada principal. A entidade de dados 2 (CUSTOMERS) é definida como entrada de lookup. A condição de lookup é definida como:

LOOKUP_1_1.PAYMENTS.CUSTOMER_ID = LOOKUP_1_2.CUSTOMERS.CUSTOMER_ID

A saída de lookup resultante mostra como os dados das duas entradas são combinados e transformados. Os atributos da origem de lookup são anexados aos atributos de origem principal, com os seguintes comportamentos:

  • Se a operação não encontrar um registro correspondente para um valor na origem de lookup, o registro será retornado com nulo inserido para os atributos de lookup. Por exemplo, nenhum registro correspondente foi encontrado para os valores 103, 104 e 105 de CUSTOMER_ID. Portanto, na saída resultante, nulo é preenchido nos atributos anexados CUSTOMER_ID e NAME.
  • Se a operação encontrar vários registros correspondentes para um valor na origem de lookup, qualquer registro correspondente será retornado.
Entidade de Dados 1, origem de entrada principal
PAYMENT_IDCUSTOMER_IDAMOUNT
11012500
21021110
3103500
4104400
5105150
6102450
Entidade de Dados 2, origem de entrada de lookup
CUSTOMER_IDNAME
101Peter
102Paul
106Mary
102Pauline
Saída da Lookup
PAYMENT_IDCUSTOMER_IDAMOUNTCUSTOMER_IDNAME
11012500101Peter
21021110102Paul
3103500nullnull
4104400nullnull
5105150nullnull
6102450102Paul
Adicionando e configurando um operador de lookup

Um operador de lookup usa duas origens de entrada em um fluxo de dados.

O procedimento a seguir supõe que você tenha adicionado e configurado dois operadores de origem.

  1. No painel Operadores, arraste um operador de Lookup para a tela.
  2. Com o operador de lookup focalizado, na guia Detalhes do painel Propriedades, digite um nome no campo Identifier ou deixe o nome como está.
  3. Para entrada principal, selecione a origem que contém um valor para correspondência de uma ou mais linhas na origem de lookup. A correspondência se baseia em uma condição de lookup, que você cria na etapa 5.
    A entrada principal também determina a ordem de atributos e linhas na saída de lookup resultante.
  4. Para Entrada de lookup, selecione a origem que a origem principal menciona para correspondência com uma ou mais linhas.
    Os atributos da entrada de lookup são anexados aos atributos da entrada principal na saída resultante.
  5. Para Várias correspondências, selecione a ação a ser executada quando várias linhas correspondentes forem encontradas entre a origem principal e a origem de lookup. A ação selecionada determina as linhas a serem usadas na saída resultante.
    • Retornar qualquer linha correspondente: Ação padrão. Seleciona qualquer linha correspondente.
    • Retornar a primeira linha correspondente: Seleciona a primeira linha entre as linhas correspondentes.
    • Retornar a última linha correspondente: Seleciona a última linha entre as linhas correspondentes.
    • Erro de retorno: Exibe um erro. Não conclui a operação.
    • Retornar todas as linhas correspondentes: Seleciona todas as linhas correspondentes.
  6. Para Sem correspondência, selecione a ação a ser executada quando nenhuma linha correspondente for encontrada entre a origem principal e a origem de lookup. A ação selecionada determina como tratar a linha de origem principal que não tem uma linha correspondente na origem de lookup.
    • Ignorar linhas sem correspondência: Não inclui linhas sem correspondência na saída resultante.
    • Retornar linhas sem correspondência: Ação padrão. Inclui linhas sem correspondência na saída resultante com valores nulos.
  7. Ao lado de Condição de pesquisa, selecione Criar.
    1. No painel Criar Condição de Pesquisa, seção Condition Builder, você pode clicar duas vezes ou arrastar atributos, parâmetros e funções para adicionar ao editor e criar uma condição. Você também pode digitar uma expressão de condição manualmente no editor e validar a expressão.
      Observação

      No editor, um elemento adicionado, como uma função, pode ter espaços reservados. Para substituir um espaço reservado por outro elemento, destaque o espaço reservado e clique duas vezes em outro elemento da lista.
    2. Selecione Criar.
  8. (Opcional) Selecione Atribuir parâmetro para usar parâmetros para que a condição de pesquisa não seja vinculada ao código compilado quando você publicar o fluxo de dados. Consulte Designando um Parâmetro.
  9. Na guia Atributos, selecione para exibir atributos de entrada ou saída. Os atributos de entrada são vinculados ao operador no lado esquerdo. Os atributos de saída são vinculados ao operador no lado direito e vão para o operador seguinte.

    Você pode selecionar atributos individuais ou usar ícones de filtro para filtrar a lista de atributos. Em seguida, aplique as regras de exclusão em massa aos atributos selecionados ou filtrados.

    • Selecione o ícone de filtro na coluna Nome para filtrar atributos por um padrão de nome. No campo de filtro, digite uma expressão regular simples. Você pode usar os curingas ? e * no padrão regex.
    • Selecione o ícone de filtro na coluna Tipo para filtrar atributos por um tipo de dados. Use o menu para selecionar o tipo a ser usado como filtro.
      Observação

      Você só pode aplicar um filtro de padrão de nome, mas vários filtros de tipo por vez. Por exemplo, para filtrar pelo padrão de nome *_CODE e pelo tipo numérico ou varchar, você aplica um filtro de padrão de nome (*_CODE) e dois filtros de tipo (numérico, varchar).
    • Use o menu Ações para aplicar regras de exclusão em massa aos atributos selecionados ou filtrados. Selecione Excluir por seleção ou Excluir por filtro aplicado.
    • Selecione Verificar regras para abrir o painel Regras. Você pode exibir e gerenciar as regras que foram aplicadas à entidade de dados. Por padrão, a primeira regra no painel Regras inclui tudo.

    Um tipo complexo é mostrado como ARRAY (data type), COMPOSITE ou MAP (key type, value type). Consulte Tipos de Dados Hierárquicos para entender o que é suportado para tipos complexos.

  10. Na guia Dados, exiba uma amostra dos dados, com base na configuração do operador e em quaisquer regras aplicadas na guia Atributos.

    O Perfil de Dados não é exibido para atributos de dados complexos. Para atributos de dados complexos, para exibir a hierarquia da estrutura de dados em uma estrutura simplificada, selecione os dados complexos mostrados. Por exemplo, [...] ou {…}.

    Você pode aplicar transformações a atributos individuais ou fazer uma transformação em massa em um grupo de atributos.

    Para entidades com tipos de dados hierárquicos, consulte Tipos de Dados Hierárquicos para entender o que é suportado.

  11. Na guia Validação, verifique advertências ou erros que possam causar falha no fluxo de dados.
Criando uma condição de pesquisa

Use o Condition Builder para selecionar visualmente elementos para criar uma condição de pesquisa. Você também pode especificar uma condição manualmente no editor.

Uma condição de pesquisa permite usar um valor em uma origem de entrada principal para pesquisar registros em uma origem de entrada de pesquisa, retornando todas as linhas correspondentes. As linhas que não têm uma correspondência são retornadas com valores nulos.

Os elementos que podem ser usados em uma condição de pesquisa incluem atributos de entrada, parâmetros e funções. Você pode clicar duas vezes ou arrastar um elemento da lista para adicionar ao editor para criar uma condição. É possível validar a condição antes de criá-la.

Entrada exibe os atributos das portas de entrada upstream em duas pastas LOOKUP distintas. Exiba os atributos de cada porta expandindo ou contraindo a pasta LOOKUP apropriada. Por exemplo, LOOKUP_1_1 é a entrada principal, LOOKUP_1_2 é a entrada de pesquisa, as condições de pesquisa com base em um valor no atributo de entrada principal ADDRESS_ID podem ser:

LOOKUP_1_1.BANK_ADDRESS.ADDRESS_ID = '2001'
LOOKUP_1_1.BANK_ADDRESS.ADDRESS_ID = LOOKUP_1_2.BANK_CUSTOMER.ADDRESS_ID

Os Parâmetros são os parâmetros da expressão adicionados ao fluxo de dados usando o Construtor de Condições (operadores filtro, junção, pesquisa e divisão) ou Construtor de Expressões (operadores agregados e de expressão). Um parâmetro de expressão tem um nome, um tipo e um valor padrão. Consulte Adicionando um Parâmetro de Expressão.

Suponha que você queira pesquisar clientes de um banco específico. Você pode criar um parâmetro VARCHAR com o nome P_LOOK_UP e definir o valor padrão como 2001, que é o valor do banco específico. Em seguida, você pode criar a condição de pesquisa como:

LOOKUP_1_1.BANK_ADDRESS.ADDRESS_ID = LOOKUP_1_2.BANK_CUSTOMER.ADDRESS_ID AND LOOKUP_1_1.BANK_ADDRESS.ADDRESS_ID = $P_LOOK_UP

As Funções são aquelas disponíveis no serviço Data Integration que você pode usar em uma condição. Funções são operações executadas em argumentos transmitidos à função. As funções calculam, manipulam ou extraem valores de dados de argumentos.

Veja a seguir uma lista de funções que estão disponíveis para você adicionar quando construir as condições:

Funções de Hash
FunçãoDescriçãoExemplo
MD5(all data types)Calcula uma soma de verificação MD5 do tipo de dados e retorna um valor de string. MD5(column_name)
SHA1(all data types)Calcula um valor de hash SHA-1 do tipo de dados e retorna um valor de string. SHA1(column_name)
SHA2(all data types, bitLength)Calcula um valor de hash SHA-2 do tipo de dados e retorna um valor de string. bitLengthé um número inteiro. SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512).
ORA_HASH(expr, [max_bucket], [seed_value])

Calcula um valor de hash para expr e retorna um valor NUMBER.

expr pode ser uma expressão, uma coluna, um literal.

max_bucket é o valor máximo de bucket retornado, entre 0 e 4294967295 (padrão).

seed_value é um valor entre 0 (padrão) e 4294967295.

A Oracle aplica a função hash à combinação de expr e seed_value para produzir muitos resultados diferentes para o mesmo conjunto de dados.

ORA_HASH('1')

ORA_HASH('b', 2)

ORA_HASH(100, 10, 10)

ORA_HASH(EXPRESSION_1.CUSTOMERS.SSN, 2)

Funções Aritméticas
FunçãoDescriçãoExemplo
ABS(numeric)Retorna a potência absoluta do valor numeric.ABS(-1)
CEIL(numeric)Retorna o menor inteiro não maior que o valor numericCEIL(-1,2)
FLOOR(numeric)Retorna o maior inteiro não maior que o valor numeric.FLOOR(-1,2)
MOD(numeric1, numeric2)Retorna o resto depois que numeric1 é dividido por numeric2.MOD(8,2)
POWER(numeric1, numeric2)Eleva numeric1 à potência de numeric2.POWER(2,3)
ROUND(numeric1, numeric2)Retorna numeric1 arredondado para numeric2 casas decimais.ROUND(2.5,0)
TRUNC(numeric1, numeric2)Retorna numeric1 truncado em numeric2 casas decimais.TRUNC(2.5,0)
TO_NUMBER(expr[, format, locale])Converte um expr em um número, com base em format e em locale opcional fornecidos. A configuração regional padrão é en-US. Tags de idioma suportadas.

Padrões de formato suportados:

  • 0: Um dígito
  • #: Um dígito, zero mostra como ausente
  • .: Espaço reservado para separador decimal
  • ,: Espaço reservado para separador de agrupamento
  • E: Separa mantissa e expoente para formatos exponenciais
  • -: Prefixo negativo padrão
  • ¤: Sinal de moeda; substituído pelo símbolo de moeda; se duplo, substituído pelo símbolo de moeda internacional; se presente em um padrão, o separador decimal monetário é usado no lugar do separador decimal

TO_NUMBER('5467.12') returns retorna 5467.12

TO_NUMBER('-USD45,677.7', '¤¤##,###.#', 'en-US') retorna -45677.7

Funções de Date e Hora
Função Descrição Exemplo
CURRENT_DATE Retorna a data atual. CURRENT_DATEretorna a data de hoje, como 2023-05-26
CURRENT_TIMESTAMP Retorna a data atual e a hora do fuso horário da sessão. CURRENT_TIMESTAMP retorna a data e a hora atuais de hoje, como 2023-05-26 12:34:56
DATE_ADD(date, number_of_days) Retorna a data que é o number especificado de dias após o date especificado. DATE_ADD('2017-07-30', 1) retorna 2017-07-31
DATE_FORMAT(expr, format[, locale])

Formata uma expr de Data, com base no format e no locale opcional fornecidos. A configuração regional padrão é en-US. Tags de idioma suportadas.

Padrões de formato de data suportados:

  • yy: ano com dois dígitos
  • yyyy: ano com quatro dígitos
  • M: Mês numérico, como 1 para janeiro
  • MM: Mês numérico, como 01 para janeiro
  • MMM: Mês resumido, como Jan
  • MMMMMM: Mês completo, como Janeiro
  • d: Dia numérico do mês, como 1 para 1 de junho
  • dd: Dia numérico do mês, como 01 para 1 de junho
  • DDD: Dia numérico do ano de 001 a 366, como 002 para 2 de janeiro
  • F: Dia numérico da semana em um mês, como 3 para a 3a segunda-feira de junho.
  • EEE ou E: Dia nomeado abreviado da semana, como Dom para domingo
  • EEEE: Dia da semana nomeado, como Domingo
  • HHH: formato de 24 horas de 00 a 23
  • H: formato de 0 a 23 horas
  • hh: formato de 12 horas de 01 a 12
  • h: formato de 12 horas de 1 a 12
  • mm: minutos de 00 a 59
  • ss: segundos de 00 a 59
  • SSS: milissegundos de 000 a 999
  • a: AM ou PM
  • z: fuso horário, como PDT

DATE_FORMAT(Date '2020-10-11', 'yyyy-MM-dd') retorna '2020-10-11'. O primeiro argumento é um objeto Date representando 11 de outubro de 2020.

DATE_FORMAT(Date '2018-junio-17', 'yyyy/MMMM/dd', 'es-ES') retorna '2018/junio/17'

DAYOFMONTH(date) Retorna o dia da data no mês. DAYOFMONTH('2020-12-25') retorna 25
DAYOFWEEK(date) Retorna o dia da data na semana. DAYOFWEEK('2020-12-25') retorna 6 para sexta-feira. Nos Estados Unidos, o domingo é considerado 1, a segunda-feira é 2 e assim por diante.
DAYOFYEAR(date) Retorna o dia da data no ano. DAYOFYEAR('2020-12-25') retorna 360
WEEKOFYEAR(date) Retorna a semana da data no ano.

WEEKOFYEAR('2022-07-28') retorna 30

WEEKOFYEAR('2022-07-28 13:24:30') retorna 30

HOUR(datetime) Retorna o valor da hora da data/hora. HOUR('2020-12-25 15:10:30') retorna 15
LAST_DAY(date) Retorna o último dia do mês da data. LAST_DAY('2020-12-25') retorna 31
MINUTE(datetime) Retorna o valor do minuto da data e hora. HOUR('2020-12-25 15:10:30') retorna 10
MONTH(date) Retorna o valor do mês da data. MONTH('2020-06-25') retorna 6
QUARTER(date) Retorna o trimestre do ano em que a data está. QUARTER('2020-12-25') retorna 4
SECOND(datetime) Retorna o valor de segundo da data e hora. SECOND('2020-12-25 15:10:30') retorna 30
TO_DATE(string, format_string[, localeStr]) Faz parsing da expressão de string com a expressão format_string para uma data. A configuração regional é opcional. O padrão é en-US. Tags de idioma suportadas.

Nas expressões do pipeline, format_string deve usar os códigos de formato strftime. Caso contrário, as strings de formato com distinção entre maiúscula/minúscula suportadas serão:

  • yy: ano com dois dígitos
  • yyyy: ano com quatro dígitos
  • M: Mês numérico, como 1 para janeiro
  • MM: Mês numérico, como 01 para janeiro
  • MMM: Mês resumido, como Jan
  • MMMMMM: Mês completo, como Janeiro
  • d: Dia numérico do mês, como 1 para 1 de junho
  • dd: Dia numérico do mês, como 01 para 1 de junho
  • DDD: Dia numérico do ano de 001 a 366, como 002 para 2 de janeiro
  • F: Dia numérico da semana em um mês, como 3 para a 3a segunda-feira de junho.
  • EEE ou E: Dia nomeado abreviado da semana, como Dom para domingo
  • EEEE: Dia da semana nomeado, como Domingo
  • HHH: formato de 24 horas de 00 a 23
  • H: formato de 0 a 23 horas
  • hh: formato de 12 horas de 01 a 12
  • h: formato de 12 horas de 1 a 12
  • mm: minutos de 00 a 59
  • ss: segundos de 00 a 59
  • SSS: milissegundos de 000 a 999
  • a: AM ou PM
  • z: fuso horário, como PDT

TO_DATE('31 December 2016', 'dd MMMM yyyy') retorna um valor de Data igual a 2016-12-31

TO_DATE('2018/junio/17', 'yyyy/MMMM/dd', 'es-ES') retorna um valor de Data igual a 2018-06-17

TO_TIMESTAMP(expr, format_string[, localeStr]) Converte um expr de VARCHAR em um valor de TIMESTAMP, com base no valor format_string e no valor localeStr opcional fornecidos.

Nas expressões do pipeline, format_string deve usar os códigos de formato strftime. Caso contrário, os padrões de formato suportados serão:

  • yy: ano com dois dígitos
  • yyyy: ano com quatro dígitos
  • M: Mês numérico, como 1 para janeiro
  • MM: Mês numérico, como 01 para janeiro
  • MMM: Mês resumido, como Jan
  • MMMMMM: Mês completo, como Janeiro
  • d: Dia numérico do mês, como 1 para 1 de junho
  • dd: Dia numérico do mês, como 01 para 1 de junho
  • DDD: Dia numérico do ano de 001 a 366, como 002 para 2 de janeiro
  • F: Dia numérico da semana em um mês, como 3 para a 3a segunda-feira de junho.
  • EEE ou E: Dia nomeado abreviado da semana, como Dom para domingo
  • EEEE: Dia da semana nomeado, como Domingo
  • HHH: formato de 24 horas de 00 a 23
  • H: formato de 0 a 23 horas
  • hh: formato de 12 horas de 01 a 12
  • h: formato de 12 horas de 1 a 12
  • mm: minutos de 00 a 59
  • ss: segundos de 00 a 59
  • SSS: milissegundos de 000 a 999
  • a: AM ou PM
  • z: fuso horário, como PDT
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') retorna um objeto TIMESTAMP que representa 11am 10:10 Oct 11th, 2020
WEEK(date)

Retorna o valor da semana da data.

WEEK('2020-06-25') retorna 4
YEAR(date) Retorna o valor do ano da data. YEAR('2020-06-25') retorna 2020
ADD_MONTHS(date_expr, number_months) Retorna a data após a adição do número especificado de meses à data, timestamp ou string especificada com um formato yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS.

ADD_MONTHS('2017-07-30', 1) retorna 2017-08-30

ADD_MONTHS('2017-07-30 09:07:21', 1) retorna 2017-08-30

MONTHS_BETWEEN(start_date_expr, end_date_expr)

Retorna o número de meses entre start_date_expr e end_date_expr. start_date_expr e end_date_expr podem ser uma data, um timestamp ou uma string com um formato yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Um número inteiro será retornado se as duas datas forem o mesmo dia do mês ou se ambas forem o último dia em seus respectivos meses. Caso contrário, a diferença será calculada com base em 31 dias por mês.

MONTHS_BETWEEN('2022-01-01', '2022-01-31') retorna 1

MONTHS_BETWEEN('2022-07-28', '2020-07-25') retorna 24

MONTHS_BETWEEN('2022-07-28 13:24:30', '2020-07-25 13:24:30') retorna 24

FROM_UTC_TIMESTAMP(time_stamp, time_zone)

Interpreta uma data, um timestamp ou uma string como horário UTC e converte esse horário em um timestamp no fuso horário especificado.

Para string, use um formato como: yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

O formato de fuso horário é um ID de zona baseado em região (por exemplo, 'área/cidade', como 'Asia/Seoul', ou um deslocamento de fuso horário (por exemplo, UTC+02).

FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') retorna 2017-07-14 03:40:00.0
TO_UTC_TIMESTAMP(time_stamp, time_zone)

Converte uma data, um timestamp ou uma string no fuso horário especificado em um timestamp UTC.

Para string, use um formato como: yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

O formato de fuso horário é um ID de zona baseado em região (por exemplo, 'área/cidade', como 'Asia/Seoul'), ou um deslocamento de fuso horário (por exemplo, UTC+02).

TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') retorna 2017-07-14 01:40:00.0
FROM_UNIXTIME(unix_time[, fmt])

Converte a época ou o horário especificado do Unix em uma string que representa o timestamp desse momento no fuso horário do sistema atual e no formato especificado.

Observação: O horário do Unix é o número de segundos decorridos desde 1o de janeiro de 1970 00:00:00 UTC.

Se fmt for omitido, o formato padrão será yyyy-MM-dd HH:mm:ss

FROM_UNIXTIME(1255033470) retorna '2009-10-08 13:24:30'

FROM_UNIXTIME(1637258854) retorna '2021-11-18 10:07:34'

O fuso horário padrão é PST nos exemplos

UNIX_TIMESTAMP([time_expr[, fmt]])

Converte o horário atual ou especificado em um timestamp do Unix em segundos.

time_expr é uma data, um timestamp ou uma string com um formato yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Se time_expr não for informado, o horário atual será convertido.

Se time_expr for uma string e fmt for omitido, o padrão será yyyy-MM-dd HH:mm:ss

UNIX_TIMESTAMP('1970-01-01 00:00:00', 'yyyy-MM-dd HH:mm:ss') retorna 28800

O fuso horário padrão é PST neste exemplo

INTERVAL 'year' YEAR[(year_precision)]

Retorna um período em anos.

year_precision é o número de dígitos no campo year; ele varia de 0 a 9. Se year_precision for omitido, o padrão será 2 (deve ser menor que 100 anos).

INTERVAL '1' YEAR retorna um intervalo de 1 ano

INTERVAL '200' YEAR(3) retorna um intervalo de 200 anos

INTERVAL 'year month' YEAR[(year_precision)] TO MONTH

Retorna um período em anos e meses. Use para armazenar um período usando os campos year e month.

year_precision é o número de dígitos no campo year; ele varia de 0 a 9. Se year_precision for omitido, o padrão será 2 (deve ser menor que 100 anos).

INTERVAL '100-5' YEAR(3) TO MONTH retorna um intervalo de 100 anos e 5 meses. Especifique a precisão do ano principal de 3.
INTERVAL 'month' MONTH[(month_precision)]

Retorna um período em meses.

month_precision é o número de dígitos no campo mês; ele varia de 0 a 9. Se month_precision for omitido, o padrão será 2 (deve ser menor que 100 anos).

INTERVAL '200' MONTH(3) retorna um intervalo de 200 meses. Especifique a precisão do mês de 3.
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)]

Retorna um período em termos de dias, horas, minutos e segundos.

day_precision é o número de dígitos no campo day; ele varia de 0 a 9. O padrão é 2.

fractional_seconds_precision é o número de dígitos na parte fracionária do valor do segundo no campo time; ele varia de 0 a 9.

INTERVAL '11 10:09:08.555' DAY TO SECOND(3) retorna um intervalo de 11 dias, 10 horas, 09 minutos, 08 segundos e 555 milésimos de segundo
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)]

Retorna um período em termos de dias, horas e minutos.

day_precision é o número de dígitos no campo day; ele varia de 0 a 9. O padrão é 2.

minute_precision é o número de dígitos no campo minute; ele varia de 0 a 2. O padrão é 2.

INTERVAL '11 10:09' DAY TO MINUTE retorna um intervalo de 11 dias, 10 horas e 09 minutos
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)]

Retorna um período em termos de dias e horas.

day_precision é o número de dígitos no campo day; ele varia de 0 a 9. O padrão é 2.

hour_precision é o número de dígitos no campo hora; ele varia de 0 a 2. O padrão é 2.

INTERVAL '100 10' DAY(3) TO HOUR retorna um intervalo de 100 dias e 10 horas
INTERVAL 'day' DAY[(day_precision)]

Retorna um período em termos de dias.

day_precision é o número de dígitos no campo day; ele varia de 0 a 9. O padrão é 2.

INTERVAL '999' DAY(3) retorna um intervalo de 999 dias
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)]

Retorna um período em termos de horas, minutos e segundos.

hour_precision é o número de dígitos no campo hora; ele varia de 0 a 2. O padrão é 2.

fractional_seconds_precision é o número de dígitos na parte fracionária do valor do segundo no campo time; ele varia de 0 a 9.

INTERVAL '09:08:07.6666666' HOUR TO SECOND(7) retorna um intervalo de 9 horas, 08 minutos e 7.6666666 segundos
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)]

Retorna um período em termos de horas e minutos.

hour_precision é o número de dígitos no campo hora; ele varia de 0 a 2. O padrão é 2.

minute_precision é o número de dígitos no campo minute; ele varia de 0 a 2. O padrão é 2.

INTERVAL '09:30' HOUR TO MINUTE retorna um intervalo de 9 horas e 30 minutos
INTERVAL 'hour' HOUR[(hour_precision)]

Retorna um período em termos de horas.

hour_precision é o número de dígitos no campo hora; ele varia de 0 a 2. O padrão é 2.

INTERVAL '40' HOUR retorna um intervalo de 40 horas
INTERVAL 'minute' MINUTE[(minute_precision)]

Retorna um período em termos de minutos.

minute_precision é o número de dígitos no campo minute; ele varia de 0 a 2. O padrão é 2.

INTERVAL '15' MINUTE retorna um intervalo de 15 minutos
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)]

Retorna um período em termos de minutos e segundos.

minute_precision é o número de dígitos no campo minute; ele varia de 0 a 2. O padrão é 2.

fractional_seconds_precision é o número de dígitos na parte fracionária do valor do segundo no campo time; ele varia de 0 a 9.

INTERVAL '15:30' MINUTE TO SECOND retorna um intervalo de 15 minutos e 30 segundos
INTERVAL 'second' SECOND[(fractional_seconds_precision)]

Retorna um período em termos de segundos.

fractional_seconds_precision é o número de dígitos na parte fracional do campo segundo; ele varia de 0 a 9. O padrão é 3.

INTERVAL '15.678' SECOND retorna um intervalo de 15,678 segundos
Funções Analíticas
Função Descrição Exemplo
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) Retorna o valor avaliado na linha que é a primeira do quadro da janela. FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) retorna o primeiro valor BANK_ID em uma janela na qual as linhas são calculadas como linha atual e 1 linha após essa linha, particionadas por BANK_ID e em ordem crescente de BANK_NAME.
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) Retorna o valor avaliado na linha em um determinado deslocamento antes da linha atual dentro da partição. Se não houver essa linha, o valor padrão será retornado. O deslocamento e o padrão são avaliados em relação à linha atual. Se omitido, o desvio é padronizado como 1 e o padrão é NULL. LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) retorna o valor BANK_ID da segunda linha antes da linha atual, particionada por BANK_ID e em ordem decrescente de BANK_NAME. Se não houver esse valor, hello será retornado.
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) Retorna o valor avaliado na linha que é a última do quadro da janela. LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) retorna o último valor BANK_ID em uma janela na qual as linhas são calculadas como a linha atual e 1 linha após essa linha, particionada por BANK_ID e em ordem crescente de BANK_NAME.
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) Retorna o valor avaliado na linha em um determinado deslocamento após a linha atual dentro da partição. Se não houver essa linha, o valor padrão será retornado. O deslocamento e o padrão são avaliados em relação à linha atual. Se omitido, o desvio é padronizado como 1 e o padrão é NULL. LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retorna o valor BANK_ID da segunda linha após a linha atual, particionada por BANK_ID e em ordem crescente de BANK_NAME. Se não houver esse valor, hello será retornado.
RANK() OVER([ partition_clause ] order_by_clause) Retorna a classificação da linha atual com lacunas, contando a partir de 1. RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retorna a classificação de cada linha dentro do grupo de partições de BANK_ID, em ordem crescente de BANK_NAME.
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) Retorna o número exclusivo da linha atual dentro de sua partição, contando a partir de 1. ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retorna o número de linha exclusivo de cada linha dentro do grupo de partições de BANK_ID, em ordem crescente de BANK_NAME.
Funções da String
FunçõesDescriçãoExemplo
CAST(value AS type)Retorna o valor especificado no tipo especificado.CAST("10" AS INT) retorna 10
CONCAT(string, string)Retorna os valores combinados de strings ou colunas.CONCAT('Oracle','SQL') retorna OracleSQL
CONCAT_WS(separator, expression1, expression2, expression3,...) Retorna os valores combinados de strings ou colunas usando o separador especificado entre as strings ou colunas.

Um separador é obrigatório e deve ser uma string.

Pelo menos uma expressão deve ser fornecida após o separador. Por exemplo: CONCAT_WS(',' col1)

CONCAT_WS('-', 'Hello', 'Oracle') retorna Hello-Oracle

CONCAT_WS(' ', address, city, postal_code) retorna 123 MyCity 987654

Se um filho da função for um array, o array será nivelado:

CONCAT_WS(',', 1,2,3, to_array(4,5,6), to_array(7,8), 9) retorna 1,2,3,4,5,6,7,8,9

INITCAP(string)Retorna a string com a primeira letra de cada palavra em maiúscula, enquanto todas as outras letras ficam em minúsculas e cada palavra é delimitada por um espaço em branco.INITCAP('oRACLE sql') retorna Oracle Sql
INSTR(string, substring[start_position])Retorna o índice (baseado em 1) da primeira ocorrência de substring em string.INSTR('OracleSQL', 'SQL') retorna 7
LOWER(string)Retorna a string com todas as letras alteradas para minúsculas.LOWER('ORACLE') retorna oracle
LENGTH(string)Retorna o tamanho do caractere da string ou o número de bytes de dados binários. O tamanho da string inclui espaços à direita.LENGTH('Oracle') retorna 6
LTRIM(string)Retorna a string com espaços à esquerda removidos.LTRIM(' Oracle')
NVL(expr1, epxr2)Retorna o argumento que não é nulo.NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID())
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx])Pesquisa e extrai a string que corresponde a um padrão de expressão regular da string de entrada. Se o índice do grupo de captura opcional for informado, a função extrairá o grupo específico.

REGEXP_SUBSTR('https://www.oracle.com/products', 'https://([[:alnum:]]+\.?){3,4}/?') retorna https://www.oracle.com

REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) retorna 22
REPLACE(string, search, replacement)Substitui todas as ocorrências de search por replacement.

Se search não for encontrado na string, ela será retornada inalterada.

Se replacement não for especificado ou for uma string vazia, nada substituirá search que é removido de string.

REPLACE('ABCabc', 'abc', 'DEF') retorna ABCDEF
RTRIM(string)Retorna a string com espaços à esquerda removidos da direita.RTRIM('Oracle ')
SUBSTRING(string, position[, substring_length])Retorna a substring que começa na posição. SUBSTRING('Oracle SQL' FROM 2 FOR 3) returns rac
Para números, TO_CHAR(expr) e datas TO_CHAR(expr, format[, locale])Converte números e datas em strings. Para números, nenhum formato é necessário. Para datas, use o mesmo formato que DATE_FORMAT descrito em Funções de Data e Hora. A configuração regional padrão é en-US. Consulte tags de idioma suportadas.

Nas expressões do pipeline, format_string deve usar os códigos de formato strftime. Caso contrário, os padrões de formato de data suportados são:

  • yy: ano com dois dígitos
  • yyyy: ano com quatro dígitos
  • M: Mês numérico, como 1 para janeiro
  • MM: Mês numérico, como 01 para janeiro
  • MMM: Mês resumido, como Jan
  • MMMMMM: Mês completo, como Janeiro
  • d: Dia numérico do mês, como 1 para 1 de junho
  • dd: Dia numérico do mês, como 01 para 1 de junho
  • DDD: Dia numérico do ano de 001 a 366, como 002 para 2 de janeiro
  • F: Dia numérico da semana em um mês, como 3 para a 3a segunda-feira de junho.
  • EEE ou E: Dia nomeado abreviado da semana, como Dom para domingo
  • EEEE: Dia da semana nomeado, como Domingo
  • HHH: formato de 24 horas de 00 a 23
  • H: formato de 0 a 23 horas
  • hh: formato de 12 horas de 01 a 12
  • h: formato de 12 horas de 1 a 12
  • mm: minutos de 00 a 59
  • ss: segundos de 00 a 59
  • SSS: milissegundos de 000 a 999
  • a: AM ou PM
  • z: fuso horário, como PDT

Exemplo de número: TO_CHAR(123) retorna 123

Exemplo de data: TO_CHAR(Date '2020-10-30', 'yyyy.MM.dd', 'en-US') retorna a string 2020.10.30. O primeiro argumento é um objeto Date representando 30 de outubro de 2020.

UPPER(string)Retorna uma string com todas as letras alteradas para maiúsculas.UPPER('oracle') retorna ORACLE
LPAD(str, len[, pad])Retorna uma string preenchida à esquerda com caracteres especificados para um determinado tamanho. Se o caractere pad for omitido, o padrão será um espaço.LPAD('ABC', 5, '*') retorna '**ABC'
RPAD(str, len[, pad])Retorna uma string preenchida à direita com caracteres especificados para um determinado tamanho. Se o caractere pad for omitido, o padrão será um espaço.RPAD('XYZ', 6, '+' ) returns 'XYZ+++'
Funções do Operador (Comparação)
FunçãoDescriçãoExemplo
CASE WHEN condition1 THEN result1 ELSE result2 ENDRetorna o valor cuja condição é atendida.CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END retorna ABC se 1> 0; caso contrário, retorna XYZ
ANDO operador lógico AND. Retorna verdadeiro se os dois operandos forem verdadeiros; caso contrário, retorna falso.(x = 10 AND y = 20) retorna "true" se x for igual a 10 e y for igual a 20. Se um dos dois não for verdadeiro, retornará "false"
ORO operador lógico OR. Retorna verdadeiro se um operando for verdadeiro ou ambos forem verdadeiros; caso contrário, retorna falso.(x = 10 OR y = 20) retorna "false" se x não for igual a 10 e também y não for igual a 20. Se um for verdadeiro, retornará "true"
NOTO operador lógico NOT.
LIKEExecuta correspondência de padrão de string, se string1 corresponder ao padrão em string2.
=Verifica a igualdade. Retorna verdadeiro se expr1 for igual a expr2; caso contrário, retorna falso.x = 10 retorna "true" quando o valor de x é 10, caso contrário, retorna "false"
!=Verifica a desigualdade. Retorna verdadeiro se expr1 não for igual a expr2; caso contrário, retorna falso.x != 10 retorna "false" se o valor de x for 10, caso contrário, retorna "true"
>Verifica uma expressão maior que. Retorna verdadeiro se expr1 for maior que expr2.x > 10 retorna "true" se o valor de x for maior que 10, caso contrário, retorna "false"
>=Testa uma expressão maior que ou igual a. Retorna verdadeiro se expr1 for maior ou igual a expr2.x > =10 retorna "true" se o valor de x for maior ou igual a 10, caso contrário, retorna "false"
<Testa uma expressão menor que. Retorna verdadeiro se expr1 for menor que expr2.x < 10 retorna "true" se o valor de x for menor que 10, caso contrário, retornará "false"
<=Testa uma expressão menor que ou igual a. Retorna verdadeiro se expr1 for menor ou igual a expr2.x <= 10 retorna "true" se o valor de x for menor que 10, caso contrário, retorna "false"
||Concatena duas strings.'XYZ' || 'hello' retorna 'XYZhello'
BETWEENAvalia um intervalo.FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007
INTesta se uma expressão corresponde a uma lista de valores.FILTER_2.ORDERS.ORDER_ID IN (1003, 1007)
Funções de ID Exclusivo
FunçãoDescriçãoExemplo
NUMERIC_ID()Gera um identificador exclusivo universal que é um número de 64 bits para cada linha.NUMERIC_ID() retorna, por exemplo, 3458761969522180096 e 3458762008176885761
ROWID()Gera números monotonicamente crescentes de 64 bits.ROWID() retorna, por exemplo, 0, 1, 2 e assim por diante
UUID()Gera um identificador exclusivo universal que é uma String de 128 bit para cada linha.UUID() retorna, por exemplo, 20d45c2f-0d56-4356-8910-162f4f40fb6d
MONOTONICALLY_INCREASING_ID() Gera inteiros exclusivos e monotonicamente crescentes de 64 bits que são números não consecutivos. MONOTONICALLY_INCREASING_ID() retorna, por exemplo, 8589934592 e 25769803776
Funções Condicionais
FunçãoDescriçãoExemplo
COALESCE(value, value [, value]*)Retorna o primeiro argumento não nulo, se ele existir; caso contrário, retorna um nulo.COALESCE(NULL, 1, NULL) retorna 1
NULLIF(value, value)Retorna nulo se os dois valores forem iguais, caso contrário, retorna o primeiro valor.NULLIF('ABC','XYZ') retorna ABC
Funções Hierárquicas
FunçãoDescriçãoExemplo
SCHEMA_OF_JSON(string)Faz parsing de uma string JSON e infere o esquema no formato DDL.

SCHEMA_OF_JSON('[{\"Zipcode\":704,\"ZipCodeType\":\"STANDARD\",\"City\":\"ORACLECITY\",\"State\":\"OC\"}]') retorna 'ARRAY<STRUCT<City:string,State:string,ZipCodeType:string,Zipcode:bigint>>'

SCHEMA_OF_JSON('[{\"col\":0}]') retorna 'ARRAY<STRUCT<col: BIGINT>>'

FROM_JSON(column, string)

Faz parsing de uma coluna que contém uma string JSON em um dos tipos a seguir, com o esquema especificado.

  • Map, com String como tipo de chave
  • Struct
  • Array

FROM_JSON('{\"Zipcode\":704,\"City\":\"ORACLE CITY\"}', 'STRUCT<Zipcode: BIGINT, City: STRING>') retorna uma coluna de tipo Struct com o esquema especificado: {704, ORACLE CITY}

FROM_JSON('{\"a\":1, \"b\":0.8}', 'STRUCT<a: BIGINT, b: DOUBLE>') retorna uma coluna de tipo Struct com o esquema especificado: {1, 0.8}

TO_JSON(column)Converte uma coluna que contém um tipo Struct ou Array de Structs ou um tipo Map ou Array de Map em uma string JSON.TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) retorna uma string JSON {"s1":[1,2,3],"s2":{"key":"value"}}
TO_MAP(string,column[,string,column]*)Cria uma nova coluna do tipo Map. As colunas de entrada devem ser agrupadas como pares de chave/valor. As colunas de chave de entrada não podem ser nulas e devem ter todas o mesmo tipo de dados. As colunas de valor de entrada devem todas ter o mesmo tipo de dados.

TO_MAP('Ename',Expression_1.attribute1) retorna uma coluna de tipo Map: {"ENAME" -> 100}

TO_MAP('block', EXPRESSION_1.MYSOURCE.address.block, 'unit', EXPRESSION_1.MYSOURCE.address.unit) retorna uma coluna de tipo Map: {"block" -> 1,"unit" -> 1}

TO_STRUCT(string,column[,string,column]*)Cria uma nova coluna do tipo Struct. As colunas de entrada devem ser agrupadas como pares de chave/valor.

TO_STRUCT('Ename',Expression_1.attribute1) retorna {100}

TO_STRUCT('Id',Expression_1.attribute1, 'Name', Expression_1.attribute2) retorna {100, "John"}

TO_ARRAY(column[,column]*)Cria uma nova coluna como tipo Array. As colunas de entrada devem todas ter o mesmo tipo de dados.

TO_Array(Expression_1.attribute1) retorna [100]

TO_ARRAY(EXPRESSION_1.attribute2,EXPRESSION_1.attribute3) retorna ["John","Friend"]

Funções de Ordem Superior

Os operadores de fluxo de dados que suportam a criação de expressões e tipos de dados hierárquicos podem usar funções de ordem superior.

Estes são os operadores suportados:

  • Agregado

  • Expressão

  • Filtro

  • Associar

  • Lookup

  • Divisão

  • Deslocar

FunçãoDescriçãoExemplo
TRANSFORM(column, lambda_function)Recebe uma matriz e uma função anônima e configura uma nova matriz aplicando a função a cada elemento e atribuindo o resultado à matriz de saída.Para um array de entrada de inteiros [1, 2, 3], TRANSFORM(array, x -> x + 1) retorna um novo array de [2, 3, 4].
TRANSFORM_KEYS(column, lambda_function)Usa um mapa e uma função com 2 argumentos (chave e valor) e retorna um mapa no qual as chaves têm o tipo do resultado da função lambda, e os valores têm o tipo dos valores de mapa da coluna.Para um mapa de entrada com chaves inteiras e valores de string {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'}, TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) retorna um novo mapa de {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'}.
TRANSFORM_VALUES(column, lambda_function)Usa um mapa e uma função com 2 argumentos (chave e valor) e retorna um mapa no qual os valores têm o tipo do resultado das funções lambda, e as chaves têm o tipo das chaves de mapa de coluna. Para um mapa de entrada com chaves de string e valores de string {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'}, TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) retorna um novo mapa de {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'}.
ARRAY_SORT(array(...), lambda_function)

Somente o operador de Expressão suporta ARRAY_SORT.

Recebe uma matriz e classifica de acordo com a função fornecida que recebe 2 argumentos.

A função deve retornar -1, 0 ou 1, dependendo de o primeiro elemento ser menor que, igual a ou maior que o segundo elemento.

Se a função for omitida, a matriz será classificada em ordem crescente.

array_sort(to_array(5, 6, 1),
                   (left, right) -> CASE WHEN left < right THEN -1
                                         WHEN left > right THEN 1 ELSE 0 END)

A matriz retornada é:

[1,5,6]

Operador de Função

Use o operador de função para chamar o Oracle Cloud Infrastructure Functions no Data Integration.

Observação

Para estruturas de dados complexas como Map, Array e Composto (Struct), somente o formato de serialização JSON é suportado no momento.

Antes de usar o OCI Functions em um fluxo de dados no Data Integration, entenda as dependências e tenha concluído as tarefas de pré-requisito.

Antes de começar

A função que você deseja chamar deve estar implantada no OCI Functions. A função pode ser escrita em qualquer idioma.

Use a lista de verificação de tarefas a seguir para garantir que você tenha a configuração e as informações necessárias para usar o operador de função com o OCI Functions.

TarefaRequisito
Configurar para usar e acessar o OCI Functions

Este tópico presume que a tenancy e o ambiente de desenvolvimento já estejam configurados para implantar funções no OCI Functions.

Consulte Preparação para Funções.

Somente funções implantadas no OCI Functions podem ser usadas com o operador de função no Data Integration.

Crie políticas para controlar a chamada e o gerenciamento de funções.

Este tópico pressupõe que você ou o administrador da tenancy já tenha criado as políticas necessárias do Oracle Cloud Infrastructure. Consulte Criando Políticas para controlar o acesso à rede e aos recursos relacionados a funções.

Em um ambiente de produção, talvez você queira restringir os usuários a chamar funções em um aplicativo específico ou a chamar apenas uma função específica.

Por exemplo, para restringir os usuários a chamar funções em um espaço de trabalho específico, digite as instruções de política no seguinte formato:

allow any-user to use fn-invocation in compartment <compartment-name> where ALL {request.principal.type='disworkspace', request.principal.id='<workspace-ocid>'}

allow any-user to read fn-function in compartment <compartment-name> where ALL {request.principal.type='disworkspace', request.principal.id='<workspace-ocid>'}

Para restringir os usuários a chamar uma função específica em um espaço de trabalho:

allow any-user to use fn-invocation in compartment <compartment-name> where ALL {request.principal.type='disworkspace', request.principal.id='<workspace-ocid>', target.function.id='<function-ocid>'}

allow any-user to read fn-function in compartment <compartment-name> where ALL {request.principal.type='disworkspace', request.principal.id='<workspace-ocid>', target.function.id='<function-ocid>'}

Consulte Controlando o Acesso a Funções de Chamada e Gerenciamento.

Crie um aplicativo no OCI Functions.

Aplicativo é um agrupamento lógico de funções.

Em um aplicativo, você especifica de uma a três sub-redes nas quais as funções serão executadas. As funções em execução em um aplicativo são isoladas das funções em execução em outro aplicativo.

Consulte Criando Aplicativos (no Functions).

Implantar uma função no OCI Functions.

Para que a função no OCI Functions funcione com o operador de função do Data Integration em um fluxo de dados, a função não deve ler ou gravar nenhum identificador com um caractere de espaço.

Quando você implanta uma função no OCI Functions usando a CLI do Fn Project, a função é criada como imagem do Docker e enviada para um registro especificado do Docker.

Consulte Criando e Implantando Funções.

Colete as informações necessárias para usar a função implantada com o operador de função.

Ao adicionar e configurar um operador de função em um fluxo de dados do Data Integration, você precisa saber o seguinte:

  • O compartimento que tem o aplicativo OCI Functions no qual a função que você deseja usar está implantada
  • O aplicativo no OCI Functions que tem a função implantada
  • O nome da função implantada
  • Os campos que são definidos na função
Adicionando e configurando um operador de função

Um operador de função permite que você use uma função implantada no OCI Functions para processar dados de uma origem de entrada. Os tipos de dados primitivos e complexos são suportados.

Especifique a forma de entrada da função e os atributos de entrada e saída para leitura e gravação do operador de função. Em seguida, mapeie manualmente os atributos de origem para os atributos de entrada.

No momento, apenas o formato de serialização JSON é suportado para estruturas de dados complexas, como Map, Array e Composto (Struct).

O procedimento a seguir presume que você tenha adicionado e configurado um operador de origem com a entidade de dados que deseja usar com a função.

  1. No painel Operadores, arraste um operador de Função para a tela.
  2. Com o operador de função focalizado, na guia Detalhes do painel Propriedades, digite um nome no campo Identifier ou deixe o nome como está.
  3. Selecione a Função do OCI a usar para esse operador. Consulte Selecionando uma função.
  4. Selecione o Formato de série e defina os dados de entrada e saída da função.
  5. Especifique os Atributos de entrada e os Atributos de saída para o operador e os valores de Configuração de função para a função. Consulte Adicionando uma propriedade do operador de função.

    Os Atributos de entrada definem a forma de entrada para o operador de função, que é um ou mais atributos de entrada em que a função trabalha. Os atributos de entrada são mapeados para os atributos de entrada a partir da origem da entidade de dados.

    Os valores de Configuração da função definem a forma de entrada da função, que é um ou mais campos definidos na função. Defina um campo de função com um nome e um valor. O valor de um campo corresponde a um atributo de entrada. Você pode parametrizar um valor de configuração de função.

    Os Atributos de saída definem a forma de saída do operador de função, que é um ou mais atributos cuja saída a função gravará. Adicione um atributo de saída para cada campo de função desejado na saída. Os operadores subsequentes na direção descendente podem usar os atributos de saída.

    Observação

    Não use um caractere de espaço no nome do identificador para um atributo de entrada, um atributo de saída ou um campo de função. Além disso, nomes como "Elemento", "Chave" e "Valor" não são permitidos.
  6. (Opcional) Em Propriedades da função, expanda Configuração da função para revisar os valores de configuração da função. você pode alterar ou parametrizar um valor.

    BATCH_SIZE é uma configuração de função predefinida que representa o número de linhas que uma função processa por vez. O padrão é 10.000 linhas.

    Para um valor de configuração de função, você pode:

  7. Na guia Atributos, selecione para exibir atributos de entrada ou saída. Os atributos de entrada são vinculados ao operador no lado esquerdo. Os atributos de saída são vinculados ao operador no lado direito e vão para o operador seguinte.

    Você pode selecionar atributos individuais ou usar ícones de filtro para filtrar a lista de atributos. Em seguida, aplique as regras de exclusão em massa aos atributos selecionados ou filtrados.

    • Selecione o ícone de filtro na coluna Nome para filtrar atributos por um padrão de nome. No campo de filtro, digite uma expressão regular simples. Você pode usar os curingas ? e * no padrão regex.
    • Selecione o ícone de filtro na coluna Tipo para filtrar atributos por um tipo de dados. Use o menu para selecionar o tipo a ser usado como filtro.
      Observação

      Você só pode aplicar um filtro de padrão de nome, mas vários filtros de tipo por vez. Por exemplo, para filtrar pelo padrão de nome *_CODE e pelo tipo numérico ou varchar, você aplica um filtro de padrão de nome (*_CODE) e dois filtros de tipo (numérico, varchar).
    • Use o menu Ações para aplicar regras de exclusão em massa aos atributos selecionados ou filtrados. Selecione Excluir por seleção ou Excluir por filtro aplicado.
    • Selecione Verificar regras para abrir o painel Regras. Você pode exibir e gerenciar as regras que foram aplicadas à entidade de dados. Por padrão, a primeira regra no painel Regras inclui tudo.

    Um tipo complexo é mostrado como ARRAY (data type), COMPOSITE ou MAP (key type, value type). Consulte Tipos de Dados Hierárquicos para entender o que é suportado para tipos complexos.

  8. Na guia Mapear, arraste e solte um atributo da origem da entidade de dados para o atributo de entrada correspondente na função para criar um mapeamento manual.
  9. Na guia Dados, exiba uma amostra dos dados, com base na configuração do operador e em todas as regras aplicadas na guia Atributos.

    Os atributos de saída da função são anexados ao conjunto de dados.

    O Perfil de Dados não é exibido para atributos de dados complexos. Para atributos de dados complexos, para exibir a hierarquia da estrutura de dados em uma estrutura simplificada, selecione os dados complexos mostrados. Por exemplo, [...] ou {…}.

    Você pode aplicar transformações a atributos individuais ou fazer uma transformação em massa em um grupo de atributos.

    Para entidades com tipos de dados hierárquicos, consulte Tipos de Dados Hierárquicos para entender o que é suportado.

  10. Na guia Validação, verifique advertências ou erros que possam causar falha no fluxo de dados.
Selecionando uma função

A função que você deseja usar com um operador de função deve ser implantada em um aplicativo no Oracle Cloud Infrastructure Functions.

  1. Na tela, selecione o operador de função.
  2. Na guia Detalhes do painel Propriedades, para Função do OCI, clique em Selecionar.
  3. No painel, selecione o Compartimento que tem o aplicativo OCI Functions no qual a função que você deseja usar foi implantada.
  4. Selecione o Aplicativo no OCI Functions que tem a função implantada.
  5. Na seção Função do OCI, selecione a função.
  6. Selecione OK.
Adicionando uma propriedade de operador de função

Depois de selecionar uma função implantada, especifique as propriedades que definem os dados de entrada para a função a ser processada, os campos na configuração da função e os dados de saída que a função retorna.

Observação

Não use um caractere de espaço no nome do identificador para um atributo de entrada, um atributo de saída ou um campo de função. Além disso, nomes como "Elemento", "Chave" e "Valor" não são permitidos.
  1. Em Propriedades da função, selecione Adicionar propriedade.
  2. No painel, selecione o Tipo de propriedade que você deseja especificar.
    • Atributos de entrada: Forma de entrada para o operador. Especifique um ou mais atributos para representar os atributos de entrada da função a ser processada. Os atributos de entrada são mapeados para os atributos de entrada a partir da origem da entidade de dados.
    • Configuração da função: Especifique um ou mais campos de função que definem a forma de entrada da função. Um campo tem um nome e um valor. O valor de um campo especifica um atributo de entrada.
    • Atributos de saída: Forma de saída para o operador. Especifique zero ou mais atributos para representar a saída da função após o processamento dos dados. Adicione um atributo de saída para cada campo de função desejado na saída. Os operadores subsequentes na direção descendente podem usar os atributos de saída.
  3. Digite um nome para a propriedade no campo Identifier. Não use um caractere de espaço no nome para um atributo de entrada, um atributo de saída ou um campo de função.
  4. Selecione o Tipo de dados da propriedade.
  5. Para um tipo de dados primitivo, dependendo do Tipo e do Tipo de dados da propriedade que você está especificando, especifique os campos a seguir e outros campos aplicáveis.

    • Tamanho: Para um atributo de entrada ou saída, digite um tamanho. Por exemplo, você especifica um tamanho para um tipo de dados numérico ou varchar.
    • Valor: Para um campo de função, digite um valor que corresponda a um atributo de entrada.
  6. Para um tipo de dados complexo Map, especifique o par de chave/valor para um elemento de mapa. Selecione Adicionar tipo de dados para selecionar o tipo de dados de chave e tipo de dados de valor.

    • Chave: Selecione apenas entre os tipos de dados primitivos.
    • Valor: Selecione um dos tipos de dados primitivos e complexos.
  7. Para um tipo de dados complexo de Array, selecione Adicionar tipo de dados para especificar o tipo de dados Elemento. Você pode selecionar entre tipos de dados primitivos e complexos.

  8. Para um tipo de dados Composto (Struct), especifique o(s) esquema(s) secundário(s). Para adicionar um esquema filho, selecione o símbolo + ao lado do nome do esquema pai.

    No painel Adicionar Campo de um esquema filho, informe o Identificador e selecione um Tipo de dados. Você pode selecionar entre tipos de dados primitivos e complexos. Selecione Adicionar para adicionar o esquema filho.

    Selecione o símbolo + novamente se quiser adicionar mais de um esquema filho ao esquema pai.

    Para editar ou excluir um esquema secundário, use o menu (Ações menu) Ações no final da linha.

    Não é possível excluir o elemento do esquema principal.

  9. No painel Adicionar Propriedade, selecione Adicionar.
  10. Repita as etapas para adicionar as propriedades necessárias para definir a entrada da função, os campos de função e a saída da função.

Operador de Nivelamento

Use o operador nivelado para transformar os dados hierárquicos em um formato simplificado para uso com outros dados relacionais. O processo de achatamento também é conhecido como desnormalização ou desaninhamento.

Os formatos de arquivo hierárquicos que você pode desnormalizar são:

  • JSON e JSON com diversas linhas
  • Avro
  • Parquet

No momento, o tipo de dados hierárquico suportado que você pode aninhar é Array. Você pode selecionar apenas um nó de Array em um conjunto de dados hierárquico para nivelar. A estrutura de dados é nivelada da raiz para o nó Array selecionado e apresentada em um formato simplificado. Se o conjunto de dados tiver outros nós de Array, você terá a opção de convertê-los em strings.

Você pode configurar os atributos ou campos a serem incluídos na saída nivelada definindo Preferências de projeção.

Compreendendo as preferências de projeção

As preferências de projeção são configurações para o formato, número e tipo de atributos projetados a serem incluídos na saída após o nivelamento dos dados de entrada.

O Data Integration fornece quatro definições de preferências de projeto que são selecionadas por padrão, resultando em uma saída projetada que tem o seguinte:

  • Matrizes de índice
  • Todos os atributos até o atributo selecionado para nivelamento
  • Valores nulos para os atributos que estão faltando nos arrays subsequentes
  • Linhagem de nome principal nos nomes do atributo

Para entender as preferências de projeção que você pode configurar, use os tópicos a seguir com o exemplo de estrutura de dados JSON.

Exemplo de estrutura de dados JSON
id
vehicle[]
    make
    model
    insurance{}
        company
        policy_number
    maintenance[]
        date
        description[]
        dealerdetails[]
            servicestation1[]
                dealeraddress[]
                    city
                    state
                    contact
                dealername
            servicestation2[]
                dealeraddress[]
                    city
                    state
                    contact
                dealername
Criar e projetar índices de array

A configuração de preferência de projeção Criar e projetar índices de array permite que você controle se deseja incluir atributos de índice para arrays na saída nivelada.

O atributo de índice representa o índice de uma matriz. Suponha que o array seja ["a","b","c"], o índice de "a" seja 0, o índice de "b" seja 1 e o índice de "c" seja 2.

Por padrão, o Data Integration cria um atributo com o sufixo _INDEX para o nó de array selecionado para nivelar os dados. O tipo de dados de um atributo de índice de matriz é Inteiro.

Os atributos de índice também são criados para os nós de array pai do nó de array selecionado. A operação de nivelamento afeta todos os nós de matriz pai na estrutura hierárquica da raiz para o nó selecionado. Se um nó de array pai impactado tiver arrays irmãos, os atributos de índice não serão criados para esses nós de array irmãos.

No exemplo da estrutura de dados JSON, se você selecionar o array dealeraddress que está em servicestation2 para nivelamento, o Data Integration criará cinco atributos de índice de array: um para o nó de array selecionado e quatro para os nós pais afetados pela operação de nivelamento.

Após o nivelamento, os atributos na estrutura simplificada são os seguintes:

id
vehicle_INDEX
vehicle_make
vehicle_model
vehicle_insurance
    company
    policy_number
vehicle_maintenance_INDEX
vehicle_maintenance_date
vehicle_maintenance_description
vehicle_maintenance_dealerdetails_INDEX
vehicle_maintenance_servicestation1
    dealeraddress
        city
        state
        contact
    dealername
vehicle_maintenance_servicestation2_INDEX
vehicle_maintenance_servicestation2_dealeraddress_INDEX
vehicle_maintenance_servicestation2_dealeraddress_city
vehicle_maintenance_servicestation2_dealeraddress_state
vehicle_maintenance_servicestation2_dealeraddress_contact
vehicle_maintenance_servicestation2_dealeraddress_dealername

Um atributo de índice de array não é criado para servicestation1 porque o nó de array é irmão do nó pai impactado servicestation2. Da mesma forma, um atributo de índice não é criado para description porque o nó do array é irmão do nó pai impactado dealerdetails.

Se você não selecionar a preferência de projeção Criar e projetar índices de array, os atributos na estrutura simplificada serão os seguintes:

id
vehicle_make
vehicle_model
vehicle_insurance
    company
    policy_number
vehicle_maintenance_date
vehicle_maintenance_description
vehicle_maintenance_servicestation1
    dealeraddress
        city
        state
        contact
    dealername
vehicle_maintenance_servicestation2_dealeraddress_city
vehicle_maintenance_servicestation2_dealeraddress_state
vehicle_maintenance_servicestation2_dealeraddress_contact
vehicle_maintenance_servicestation2_dealeraddress_dealername
Retém todos os atributos até o array nivelado

A configuração da preferência de projeção Manter todos os atributos até o array nivelado permite que você controle se deseja incluir na saída nivelada os atributos que não fazem parte dos arrays nivelados.

Por padrão, o Data Integration mostra todos os atributos da raiz para o array selecionado, incluindo arrays irmãos não afetados pelo nivelamento.

No exemplo da estrutura de dados JSON, se você não selecionar a preferência de projeção Manter todos os atributos até o array nivelado, os atributos na estrutura simplificada serão os seguintes:

id
vehicle_INDEX
vehicle_maintenance_INDEX
vehicle_maintenance_dealerdetails_INDEX
vehicle_maintenance_servicestation2_INDEX
vehicle_maintenance_servicestation2_dealeraddress_INDEX
vehicle_maintenance_servicestation2_dealeraddress_city
vehicle_maintenance_servicestation2_dealeraddress_state
vehicle_maintenance_servicestation2_dealeraddress_contact
Produzir uma única linha com valores nulos para matriz principal ausente

A configuração de preferência de projeção Produzir uma única linha com valores nulos para matriz pai ausente permite que você controle se deve ignorar linhas que não têm os atributos afetados pelo nivelamento.

O efeito da definição Produzir uma única linha com valores nulos para matriz pai ausente é visto somente na guia Dados. Por padrão, o Data Integration mostra valores nulos para os atributos que estão faltando nos arrays subsequentes.

Por exemplo, esta é uma saída projetada com valores nulos:

|Company1|Redmond |[...]|true |[...]|0 |1 |123.34 |0 |Laptop |20 |
|Company1|Redmond |[...]|true |[...]|0 |1 |123.34 |1 |Charger |2 |
|Company1|Redmond |[...]|true |[...]|1 |2 |323.34 |0 |Mouse |2 |
|Company1|Redmond |[...]|true |[...]|1 |2 |323.34 |1 |Keyboard |1 |
|Company2|Seattle |[...]|false |[...]|0 |4 |123.34 |0 |Laptop |20 |
|Company2|Seattle |[...]|false |[...]|0 |4 |123.34 |1 |Charger |3 |
|Company2|Seattle |[...]|false |[...]|1 |5 |343.24 |0 |Chair |4 |
|Company2|Seattle |[...]|false |[...]|1 |5 |343.24 |1 |Lamp |2 |
|Company3|Bellevue|null |true |[...]|0 |4 |123.34 |null |null |null |
|Company4|Kirkland|null |null |null |null |null |null |null |null |null |

Se você não selecionar a opção, as linhas serão ignoradas e a saída projetada será:

|Company1|Redmond |[...]|true |[...]|0 |1 |123.34 |0 |Laptop |20 |
|Company1|Redmond |[...]|true |[...]|0 |1 |123.34 |1 |Charger |2 |
|Company1|Redmond |[...]|true |[...]|1 |2 |323.34 |0 |Mouse |2 |
|Company1|Redmond |[...]|true |[...]|1 |2 |323.34 |1 |Keyboard |1 |
|Company2|Seattle |[...]|false |[...]|0 |4 |123.34 |0 |Laptop |20 |
|Company2|Seattle |[...]|false |[...]|0 |4 |123.34 |1 |Charger |3 |
|Company2|Seattle |[...]|false |[...]|1 |5 |343.24 |0 |Chair |4 |
|Company2|Seattle |[...]|false |[...]|1 |5 |343.24 |1 |Lamp |2 |
Mantém a linhagem de nome principal nos nomes do atributo

A configuração de preferência de projeção Manter linhagem de nome pai em nomes de atributo permite que você controle se deseja incluir os nomes pai nos nomes de atributo filho.

Por padrão, o Data Integration cria nomes de nó filho com seus nomes de nó pai.

No exemplo da estrutura de dados JSON, os atributos com nomes pais na estrutura simplificada são os seguintes (supondo que as matrizes irmãs não afetadas pelo nivelamento sejam excluídas na saída):

id
vehicle_INDEX
vehicle_maintenance_INDEX
vehicle_maintenance_dealerdetails_INDEX
vehicle_maintenance_servicestation2_INDEX
vehicle_maintenance_servicestation2_dealeraddress_INDEX
vehicle_maintenance_servicestation2_dealeraddress_city
vehicle_maintenance_servicestation2_dealeraddress_state
vehicle_maintenance_servicestation2_dealeraddress_contact

Se você não selecionar a preferência de projeção Manter linhagem de nome pai em nomes de atributo, os atributos serão os seguintes:

id
vehicle_INDEX
maintenance_INDEX
dealerdetails_INDEX
servicestation2_INDEX
dealeraddress_INDEX
city
state
contact
Adicionando e configurando um operador nivelado

O procedimento a seguir pressupõe que você tenha adicionado um operador de origem e configurado o operador em uma origem de Armazenamento de Objetos com tipos de dados complexos, como um arquivo JSON.

  1. No painel Operadores, arraste o operador Nivelado para a tela e conecte o operador ao operador de origem.

    A guia Detalhes do operador nivelado é exibida no painel Propriedades.

    A tabela de atributos mostra a estrutura de dados em árvore dos dados de entrada. Por padrão, todos os nós são expandidos. Cada nó tem um tipo de dados e um caminho, como VARCHAR e parent1.parent2.node1. Por exemplo: vehicle.insurance.company

    No campo de pesquisa, você só pode procurar nós de nível superior.

  2. Com o operador nivelado em foco, use a guia Detalhes para fazer o seguinte:
    1. Digite um nome para o operador no campo Identificador ou deixe o nome como está.
    2. Em Preferências de projeção, revise as configurações. Por padrão, todas as configurações são selecionadas. Desmarque a caixa de seleção das definições que você não deseja configurar para esta operação.
    3. Nas tabelas de atributos, marque a caixa de seleção ao lado do nó de matriz para o qual você deseja nivelar a estrutura de dados. Em seguida, selecione Dados nivelados para o atributo selecionado.

      Você pode marcar apenas uma caixa de seleção.

      Após o nivelamento, o caminho do atributo complexo selecionado e nivelado é exibido acima da tabela, ao lado de Nivelado por. Por exemplo: FLATTEN_1.MYFILE_JSON.vehicle.maintenance.dealerdetails.servicestation2.dealeraddress

    4. (Opcional) Quando aplicável na estrutura nivelada, selecione o ícone de ações ao lado de um nó de array na tabela e selecione Converter array em string. Consulte também Conversões de Matriz.
    5. (Opcional) Para reverter o nivelamento selecionado na etapa c, selecione Limpar ao lado do caminho Nivelado por. Consulte Removendo um Caminho de Nivelamento.
  3. Na guia Atributos, selecione para exibir atributos de entrada ou saída. Os atributos de entrada são vinculados ao operador no lado esquerdo. Os atributos de saída são vinculados ao operador no lado direito e vão para o operador seguinte.

    Você pode selecionar atributos individuais ou usar ícones de filtro para filtrar a lista de atributos. Em seguida, aplique as regras de exclusão em massa aos atributos selecionados ou filtrados.

    • Selecione o ícone de filtro na coluna Nome para filtrar atributos por um padrão de nome. No campo de filtro, digite uma expressão regular simples. Você pode usar os curingas ? e * no padrão regex.
    • Selecione o ícone de filtro na coluna Tipo para filtrar atributos por um tipo de dados. Use o menu para selecionar o tipo a ser usado como filtro.
      Observação

      Você só pode aplicar um filtro de padrão de nome, mas vários filtros de tipo por vez. Por exemplo, se você aplicar um filtro de padrão de nome (*_CODE) e dois filtros de tipo (numérico, varchar), os atributos serão filtrados pelo padrão de nome *_CODE e pelo tipo numérico ou varchar.
    • Use o menu Ações para aplicar regras de exclusão em massa aos atributos selecionados ou filtrados. Selecione Excluir por seleção ou Excluir por filtro aplicado.
    • Selecione Verificar regras para abrir o painel Regras. Você pode exibir e gerenciar as regras que foram aplicadas à entidade de dados. Por padrão, a primeira regra no painel Regras inclui tudo.

    Um tipo complexo é mostrado como ARRAY (data type), COMPOSITE ou MAP (key type, value type). Consulte Tipos de Dados Hierárquicos para entender o que é suportado para tipos complexos.

  4. Na guia Dados, exiba uma amostra dos dados, com base na configuração do operador e em quaisquer regras aplicadas na guia Atributos.

    O Perfil de Dados não é exibido para atributos de dados complexos. Para atributos de dados complexos, para exibir a hierarquia da estrutura de dados em uma estrutura simplificada, selecione os dados complexos mostrados. Por exemplo, [...] ou {…}.

    Você pode aplicar transformações a atributos individuais ou fazer uma transformação em massa em um grupo de atributos.

    Para entidades com tipos de dados hierárquicos, consulte Tipos de Dados Hierárquicos para entender o que é suportado.

  5. Na guia Validação, verifique advertências ou erros que possam causar falha no fluxo de dados.
Convertendo outras matrizes em strings

Depois de selecionar um atributo complexo para nivelamento, pode haver outros nós de Array na estrutura nivelada.

Com os outros nós de Array em uma estrutura achatada, você pode converter uma Matriz de tipos de dados primitivos ou uma Matriz de Structs em uma String. Atualmente, o formato suportado de uma String de conversão é JSON.

Dependendo dos dados, o tipo de dados de uma String de conversão é VARCHAR ou BLOB. Você pode alterar uma conversão String de VARCHAR para CLOB, e inversamente de CLOB para VARCHAR.

O procedimento a seguir pressupõe que você tenha adicionado um operador nivelado e selecionado um atributo complexo para criar uma estrutura de dados nivelada.

  1. Com o operador nivelado em foco na tela do fluxo de dados, vá para a guia Detalhes no painel Propriedades.
  2. Na tabela de atributos, verifique se a estrutura de dados está nivelada.

    Ao lado de Nivelado por está o caminho do atributo complexo que você selecionou para nivelamento. Por exemplo: FLATTEN_1.MYFILE_JSON.vehicle.maintenance.dealerdetails.servicestation2.dealeraddress

    O ícone de ações (três pontos) é exibido para nós de Array que estão disponíveis na estrutura nivelada para conversão.

  3. Quando aplicável, selecione o ícone de ações ao lado de um nó de Array e, em seguida, selecione Converter array em string.

    Exemplos de atributos convertidos:

    Tipo de Array Atributo convertido

    Array de strings

    "goods": [
        "laptop",
        "charger",
        "chair"
      ]

    ["laptop","charger","chair"]

    Array de números

    "numbers": [
        234,
        455,
        98
      ]

    [234,455,98] 
Exibindo, alterando e removendo conversões de matriz

O procedimento a seguir pressupõe que você tenha selecionado um nó Array a ser convertido em uma String, se aplicável.

  1. Com o operador nivelado em foco na tela do fluxo de dados, vá para a guia Detalhes no painel Propriedades.
  2. Selecione Exibir conversões de array.
  3. No painel Conversões de matriz exibido, revise os atributos complexos que foram convertidos em uma String.
  4. Para alterar o tipo de dados de uma String de conversão, selecione uma ação de atualização no ícone de ações. Dependendo do tipo de dados, selecione Atualizar tipo de dados para CLOB ou Atualizar tipo de dados para VARCHAR.
  5. Siga uma das etapas abaixo para remover conversões:
    • Para remover uma única conversão, marque a caixa de seleção ao lado de uma conversão e, em seguida, selecione Remover. Como alternativa, você pode selecionar Remover no ícone de ações de uma conversão.
    • Para remover todas as conversões, marque a caixa de seleção na parte superior da lista (ao lado do cabeçalho Conversões de matriz) e selecione Remover.

    Uma conversão selecionada é removida e o atributo convertido anteriormente é revertido para sua estrutura de hierarquia original e tipo de dados.

Removendo um caminho de nivelamento

Ao configurar um operador nivelado em um fluxo de dados, você pode reverter um nivelamento limpando o caminho Nivelado por.

  1. Com o operador nivelado em foco na tela do fluxo de dados, vá para a guia Detalhes no painel Propriedades.
  2. Acima da tabela de atributos, ao lado do caminho Nivelado por, selecione Limpar.
  3. Na caixa de diálogo Limpar nivelamento exibida, confirme o nome do atributo complexo que você deseja desmarcar e selecione Limpar para continuar.

    Ao remover o nivelamento, a estrutura de dados original antes do nivelamento é restaurada:

    • Se criado, todos os atributos com o sufixo _INDEX serão removidos.
    • Se os nomes pai foram removidos dos nomes de nó filho, a hierarquia de linhagem de nome pai-filho será restaurada.
    • Se algumas matrizes foram convertidas em strings, as conversões de matriz são removidas e os atributos convertidos anteriormente são revertidos para sua estrutura de hierarquia original e tipo de dados.

Operador de Função de Tabela

Use o operador de função de tabela para adicionar funções de tabela que retornam dados na forma de tabelas.

Atualmente, apenas funções de tabela incorporadas podem ser selecionadas em uma lista. As funções de tabela fornecidas pelo operador de função de tabela incluem cubo, análise de tabulação cruzada, itens frequentes, acúmulo e Spark SQL. Cada função de tabela incorporada tem campos predefinidos que você configura para retornar a coleta de dados desejada. A lógica complexa pode ser consolidada em uma única função que retorna conjuntos específicos de dados. A parametrização dos campos permite flexibilidade no ajuste da lógica.

Um operador de função de tabela pode ser conectado a qualquer outro operador dentro de um fluxo de dados. Assim, um operador de função de tabela pode ser usado como uma origem de dados, um operador de mid-stream e um destino.

Adicionando um operador de função de tabela
  1. No painel Operadores, arraste e solte um operador de função de tabela na tela.
  2. Com o operador focalizado, na guia Detalhes do painel Propriedades, digite um nome no campo Identifier ou deixe o nome como está.
  3. Para Tipo de transformação, selecione a função de tabela que você deseja usar para esse operador.
  4. Em Configurar parâmetros, execute as seguintes etapas:
    1. Configure a lógica básica da função de tabela especificando os detalhes da função. Somente chaves de entrada de função específicas e seus valores podem ser configurados, conforme mostrado na guia Detalhes da função de tabela selecionada.
    2. (Opcional) Para parametrizar um par de chave/valor de entrada, selecione Designar parâmetro para usar parâmetros. Consulte Designando um Parâmetro.
    3. Depois de preencher os campos de entrada, selecione Calcular forma de saída.

      O Data Integration gera os campos de saída usando os detalhes da lógica básica e materializa as formas de entrada/saída. Use a guia Atributos para exibir as formas de entrada/saída.

  5. Na guia Atributos, selecione para exibir atributos de entrada ou saída. Os atributos de entrada são vinculados ao operador no lado esquerdo. Os atributos de saída são vinculados ao operador no lado direito e vão para o operador seguinte.

    Você pode selecionar atributos individuais ou usar ícones de filtro para filtrar a lista de atributos. Em seguida, aplique as regras de exclusão em massa aos atributos selecionados ou filtrados.

    • Selecione o ícone de filtro na coluna Nome para filtrar atributos por um padrão de nome. No campo de filtro, digite uma expressão regular simples. Você pode usar os curingas ? e * no padrão regex.
    • Selecione o ícone de filtro na coluna Tipo para filtrar atributos por um tipo de dados. Use o menu para selecionar o tipo a ser usado como filtro.
      Observação

      Você só pode aplicar um filtro de padrão de nome, mas vários filtros de tipo por vez. Por exemplo, para filtrar pelo padrão de nome *_CODE e pelo tipo numérico ou varchar, você aplica um filtro de padrão de nome (*_CODE) e dois filtros de tipo (numérico, varchar).
    • Use o menu Ações para aplicar regras de exclusão em massa aos atributos selecionados ou filtrados. Selecione Excluir por seleção ou Excluir por filtro aplicado.
    • Selecione Verificar regras para abrir o painel Regras. Você pode exibir e gerenciar as regras que foram aplicadas à entidade de dados. Por padrão, a primeira regra no painel Regras inclui tudo.

    Um tipo complexo é mostrado como ARRAY (data type), COMPOSITE ou MAP (key type, value type). Consulte Tipos de Dados Hierárquicos para entender o que é suportado para tipos complexos.

  6. Na guia Dados, exiba uma amostra dos dados, com base na configuração do operador e em todas as regras aplicadas na guia Atributos.

    O Perfil de Dados não é exibido para atributos de dados complexos. Para atributos de dados complexos, para exibir a hierarquia da estrutura de dados em uma estrutura simplificada, selecione os dados complexos mostrados. Por exemplo, [...] ou {…}.

    Você pode aplicar transformações a atributos individuais ou fazer uma transformação em massa em um grupo de atributos.

    Para entidades com tipos de dados hierárquicos, consulte Tipos de Dados Hierárquicos para entender o que é suportado.

  7. Na guia Validação, verifique advertências ou erros que possam causar falha no fluxo de dados.
Noções básicas de funções de tabela

Veja uma lista das funções de tabela incorporadas suportadas pelo operador de função de tabela.

Cache

Persiste e armazena em cache um conjunto de dados de acordo com o armazenamento de memória fornecido level.

Retorna um novo conjunto de dados no conjunto de dados distribuído resiliente (RDD) armazenado em cache.

Parâmetro Descrição
level

O armazenamento de memória a ser usado:

MEMORY_ONLY: Armazene como objetos Java desserializados na JVM. Se a memória for insuficiente, algumas partições RDD não são armazenadas em cache, mas são recomputadas conforme e quando necessário.

MEMORY_AND_DISK: Armazene como objetos Java desserializados na JVM. Se a memória for insuficiente, algumas partições RDD são armazenadas no disco e lidas do disco como e quando necessário.

MEMORY_ONLY_SER: Armazene como objetos Java desserializados.

MEMORY_AND_DISK_SER: Armazene como objetos Java desserializados. As partições que não se encaixam são armazenadas no disco.

DISK_ONLY: Armazene as partições RDD somente no disco.

MEMORY_ONLY_2, MEMORY_AND_DISK_2, etc: Semelhante a outros níveis, mas cada partição é replicada em dois nós de cluster.

Análise de tabulação cruzada

Calcula uma tabela de frequência ou de contingência por par a partir de valores distintos das duas colunas fornecidas.

O número de valores distintos para cada coluna deve ser menor que 1e4.

Retorna um dataframe que contém a tabela de contingência. Na tabela de contingência:

  • O nome da primeira coluna é col1_col2, em que col1 é a primeira coluna e col2 é a segunda antes da transformação. A primeira coluna de cada linha são os valores distintos de col1.
  • Os outros nomes de coluna são os valores distintos de col2.
  • As contagens são retornadas como o tipo long.
  • Pares sem ocorrências recebem zero como contagem.
  • O número máximo de pares diferentes de zero é 1e6.
  • Os elementos nulos são substituídos por null.
Parâmetro Descrição
col1

Nome da primeira coluna. Consulte a nota após esta tabela para saber as limitações.

Itens distintos de col1 fazem o primeiro item de cada linha no dataframe retornado.

col2

Nome da segunda coluna. Consulte a nota após esta tabela para saber as limitações.

Itens distintos de co2 fazem os nomes das colunas no dataframe retornado.

Observação

Somente os seguintes caracteres são permitidos em um nome de coluna:

  • letras minúsculas e maiúsculas a-z A-Z
  • números 0-9
  • sublinhado _
Exemplo

Suponha que col1 seja age e col2 seja salary.

Antes da transformação:

+---+------+
|age|salary|
+---+------+
|1  |100   |
|1  |200   |
|2  |100   |
|2  |100   |
|2  |300   |
|3  |200   |
|3  |300   |
+---+------+

Após a transformação:

+----------+---+---+---+
|age_salary|100|200|300|
+----------+---+---+---+
|2         |2  |0  |1  |
|1         |1  |1  |0  |
|3         |0  |1  |1  |
+----------+---+---+---+
Cubo

Gera um cubo multidimensional de todas as combinações possíveis usando a lista de colunas fornecida e os cálculos nas expressões de função agregada fornecidas.

As seguintes funções agregadas são suportadas nas expressões:

  • AVG
  • COUNT
  • MEAN
  • MAX
  • MIN
  • SUM

Retorna um dataframe após a transformação do cubo.

Parâmetro Descrição
cubeColumns

A lista de colunas, separadas por vírgulas, pela qual o cubo multidimensional será gerado.

aggExpressions

As expressões de função de agregação a serem executadas nas colunas.

Por exemplo: salary -> avg, age -> max

Exemplo

Antes da transformação:

+----------+-----+-------+------+---+
|department|group|region |salary|age|
+----------+-----+-------+------+---+
|Eng       |A    |local  |1000  |10 |
|Art       |B    |foreign|2000  |11 |
|Sport     |C    |local  |1500  |13 |
|Eng       |A    |foreign|800   |19 |
|Art       |A    |foreign|3000  |30 |
|Eng       |E    |foreign|1000  |21 |
|Art       |D    |local  |1000  |32 |
|Sport     |C    |local  |1000  |28 |
+----------+-----+-------+------+---+

Se cubeColumns for department, region e aggExpressions for salary -> avg, age -> max (calcular o salário médio e a idade máxima), o cubo após a transformação será:

+----------+-------+-----------------+--------+
|department|region |avg(salary)      |max(age)|
+----------+-------+-----------------+--------+
|Eng       |foreign|900.0            |21      |
|Sport     |null   |1250.0           |28      |
|Art       |null   |2000.0           |32      |
|Eng       |null   |933.3333333333334|21      |
|null      |local  |1125.0           |32      |
|Art       |foreign|2500.0           |30      |
|null      |foreign|1700.0           |30      |
|Eng       |local  |1000.0           |10      |
|null      |null   |1412.5           |32      |
|Sport     |local  |1250.0           |28      |
|Art       |local  |1000.0           |32      |
+----------+-------+-----------------+--------+
Geração de dados

Gera dados sintéticos usando o formato de arquivo e o conteúdo fornecidos. Os formatos aceitos são:

  • CSV
  • JSON

Retorna uma entidade de dados. A origem de dados sintéticos pode ser usada em testes de unidade de pipeline em que dados reais não são usados ou movidos.

Parâmetro Descrição
format

O tipo de arquivo. Os valores suportados são:

  • CSV
  • JSON
content

O conteúdo do arquivo para o formato fornecido.

Exemplo

Um exemplo de conteúdo CSV:

co1,co2,co3
1,B,3
A,2,C

Resultado da geração de dados:

+---+---+---+
|co1|co2|co3|
+---+---+---+
|1  |B  |3  |
+---+---+---+
|A  |2  |C  |
+---+---+---+
Deduplicação

Localiza duplicatas na(s) lista(s) de colunas fornecida(s) e retorna um novo conjunto de dados com as linhas duplicadas removidas.

Parâmetro Descrição
columns

Um nome de coluna ou uma lista de nomes de colunas separados por vírgula.

Exemplo

Antes da transformação:

+---+---+
|a  |b  |
+---+---+
|1  |2  |
|3  |4  |
|1  |3  |
|2  |4  |
+---+---+

Se columns for a, o conjunto de dados após a transformação será:

+---+---+
|a  |b  |
+---+---+
|1  |2  |
|3  |4  |
|2  |4  |
+---+---+
Itens frequentes

Localiza itens frequentes na coluna ou lista de colunas especificada usando a frequência mínima especificada.

O algoritmo de contagem frequente de elementos proposto por Karl et al. é usado para encontrar itens frequentes. Falsos positivos são possíveis.

Retorna um dataframe com uma matriz de itens frequentes para cada coluna.

Parâmetro Descrição
freqItems

Um nome de coluna ou uma lista separada por vírgulas de nomes de coluna para os quais você deseja localizar itens frequentes.

support

Frequência mínima para que um item seja considerado frequente.

O valor deve ser maior que 1e-4 (valor decimal de 0.0001).

Por exemplo, 0.6 representa 60%. Ou seja, um item que aparece em pelo menos 60% das linhas é um item frequente.

Exemplo

Antes da transformação:

+-------+--------------+
|user_id|favorite_fruit|
+-------+--------------+
|      1|         apple|
|      2|        banana|
|      3|         apple|
|      4|        orange|
|      5|        banana|
|      6|        banana|
|      7|         apple|
+-------+--------------+

Se freqItems for favorite_fruit e support for 0.6, o dataframe retornado após a transformação será:

+------------------------+
|favorite_fruit_freqItems|
+------------------------+
|                [banana]|
+------------------------+
Na Drop

Remove linhas que contêm valores nulos ou NaN na(s) coluna(s) especificada(s) na lista.

Retorna um dataframe que exclui as linhas.

Parâmetro Descrição
how

Como determinar se uma linha deve ser eliminada. Os valores suportados são:

  • any: Elimine a linha que contém qualquer valor nulo ou NaN no cols especificado.
  • all: Solte a linha somente se cada cols especificado for nulo ou NaN para essa linha.

O parâmetro how será ignorado se o parâmetro minNonNulls for especificado.

cols

Um nome de coluna ou uma lista de nomes de colunas separados por vírgula.

minNonNulls

O número mínimo de valores não nulos e não NaN que uma linha pode conter.

Elimina as linhas que contêm menos do que o mínimo especificado.

O parâmetro minNonNulls substitui o parâmetro how.

Exemplo

Antes da transformação:

+----+-------+----+
|id  |name   |age |
+----+-------+----+
|1   |Alice  |25  |
|2   |null   |28  |
|null|Bob    |null|
|4   |Charlie|30  |
+----+-------+----+

Se how for any e cols for name, o dataframe retornado após a transformação será:

+----+-------+----+
|id  |name   |age |
+----+-------+----+
|1   |Alice  |25  |
|null|Bob    |null|
|4   |Charlie|30  |
+----+-------+----+

Quando você usa o parâmetro how com o valor all, uma linha só é eliminada se todos os seus valores forem nulos. Por exemplo, antes da transformação:

+----+--------+----+
|  id|    name| age|
+----+--------+----+
|   1|John Doe|  30|
|   2|    null|null|
|   3|Jane Doe|  25|
|   4|Jake Doe|null|
|null|    null|null|
+----+--------+----+

Após a transformação:

+---+--------+----+
| id|    name| age|
+---+--------+----+
|  1|John Doe|  30|
|  2|    null|null|
|  3|Jane Doe|  25|
|  4|Jake Doe|null|
+---+--------+----+
Preenchimento Na

Substitui valores nulos e retorna um dataframe usando os valores substituídos.

Parâmetro Descrição
replacement

O mapa de chave/valor a ser usado para substituir valores nulos. A chave é um nome de coluna. O valor é um valor substituto.

A chave aponta para o valor de substituição. Por exemplo: name -> Tom significa substituir valores nulos na coluna name por Tom.

Um valor substituto é convertido no tipo de dados da coluna. Um valor de substituição deve ser do seguinte tipo:

  • Inst.
  • Long
  • Flutuar
  • Duplo
  • String
  • Boolean
Exemplo

Antes da transformação:

+----+-------+----+
|id  |name   |age |
+----+-------+----+
|1   |Alice  |25  |
|2   |null   |28  |
|null|Bob    |null|
|4   |Charlie|30  |
+----+-------+----+

Se o mapa de chave/valor for o seguinte:

id -> 3

name -> unknown

age -> 10

Após a transformação:

+---+-------+---+
|id |name   |age|
+---+-------+---+
|1  |Alice  |25 |
|2  |unknown|28 |
|3  |Bob    |10 |
|4  |Charlie|30 |
+---+-------+---+
Na Substituição

Substitui um valor por outro valor na(s) coluna(s) fornecida(s) por chaves correspondentes no mapa de chave e valor de substituição fornecido.

Retorna um novo dataframe que contém a transformação substituída.

Parâmetro Descrição
cols

Um nome de coluna ou uma lista de nomes de colunas separados por vírgulas nos quais os valores de substituição serão aplicados.

Se cols for *, a substituição será aplicada em todas as colunas String, Numérico ou Booliano.

replacement

O mapa de chave/valor substituto a ser usado. A chave é um valor a ser substituído. O valor é o valor de substituição. O valor do mapa pode ter nulos.

A chave aponta para o valor de substituição. Por exemplo: Alice -> Tom significa substituir Alice por Tom.

A chave e o par de valores de substituição devem ter o mesmo tipo. Somente os seguintes tipos são suportados:

  • Boolean
  • Duplo
  • String
Exemplo

Antes da transformação:

+----+-------+----+
|id  |name   |age |
+----+-------+----+
|1   |Alice  |25  |
|2   |null   |28  |
|null|Bob    |null|
|4   |Charlie|30  |
+----+-------+----+

Se cols for name e replacement for Alice -> Tom, o dataframe após a transformação será:

+----+-------+----+
|id  |name   |age |
+----+-------+----+
|1   |Tom    |25  |
|2   |null   |28  |
|null|Bob    |null|
|4   |Charlie|30  |
+----+-------+----+
Repartição

Divide um conjunto de dados pelas colunas fornecidas no número especificado de partições.

Retorna um novo conjunto de dados particionado por hash. O número exato de partição, conforme especificado, é retornado.

Parâmetro Descrição
partitionColumns

Um nome de coluna ou uma lista de nomes de coluna separados por vírgula pelos quais o conjunto de dados é particionado.

numberOfPartitions

O número de partições a serem criadas.

Consolidação

Gera um rollup multidimensional de combinações possíveis usando a lista de colunas fornecida e os cálculos nas expressões de função agregada fornecidas.

As seguintes funções agregadas são suportadas nas expressões:

  • AVG
  • COUNT
  • MEAN
  • MAX
  • MIN
  • SUM

Retorna um dataframe após a transformação de acúmulo.

Parâmetro Descrição
rollupColumns

A lista de colunas, separadas por vírgulas, pela qual gerar o acúmulo multidimensional.

aggExpressions

As expressões de função de agregação a serem executadas nas colunas.

Por exemplo: salary -> avg, age -> max

Exemplo

Antes da transformação:

+----------+-----+-------+------+---+
|department|group|region |salary|age|
+----------+-----+-------+------+---+
|Eng       |A    |local  |1000  |10 |
|Art       |B    |foreign|2000  |11 |
|Sport     |C    |local  |1500  |13 |
|Eng       |A    |foreign|800   |19 |
|Art       |A    |foreign|3000  |30 |
|Eng       |E    |foreign|1000  |21 |
|Art       |D    |local  |1000  |32 |
|Sport     |C    |local  |1000  |28 |
+----------+-----+-------+------+---+

Se rollupColumns for department, region e aggExpressions for salary -> avg, age -> max (calcular o salário médio e a idade máxima), o acúmulo após a transformação será:

+----------+-------+-----------------+--------+
|department|region |avg(salary)      |max(age)|
+----------+-------+-----------------+--------+
|Eng       |foreign|900.0            |21      |
|Sport     |null   |1250.0           |28      |
|Art       |null   |2000.0           |32      |
|Eng       |null   |933.3333333333334|21      |
|Art       |foreign|2500.0           |30      |
|Eng       |local  |1000.0           |10      |
|null      |null   |1412.5           |32      |
|Sport     |local  |1250.0           |28      |
|Art       |local  |1000.0           |32      |
+----------+-------+-----------------+--------+
Spark SQL

Executa consultas SQL do Spark em dados de entrada, criando primeiro views temporárias usando os nomes de tabela fornecidos.

Parâmetro Descrição
SQL

A instrução SQL ou o script a ser executado.

Exemplo: select * from table1

tableName

Um nome de tabela ou uma lista separada por vírgulas de nomes de tabela pelos quais o Spark cria tabelas temporárias.

Exemplo: table1, table2

Amostragem estratificada

Gera uma amostra estratificada sem substituição com base na fração de amostragem fornecida para cada estrato.

Retorna um novo dataframe que representa a amostra estratificada.

Parâmetro Descrição
strata_col

A coluna que define os estratos.

fractions

A fracção de amostragem para cada estrato, de 0.0 a 1.0.

Por exemplo, 0.1 retorna 10% das linhas e 1.0 retorna 100% das linhas.

Se uma fração não for especificada, zero será assumido.

sample_size

Se fractions não for especificado, especifique uma parte do conjunto de dados a ser amostrado, de 0.0 a 1.0.

seed

Use qualquer número aleatório em seed para retornar a mesma amostra toda vez, mantendo o resultado consistente.

Exemplo

Antes da transformação:

+---+-----+
|key|value|
+---+-----+
|  1|    1|
|  1|    2|
|  2|    1|
|  2|    1|
|  2|    3|
|  3|    2|
|  3|    3|
+---+-----+

Se strata_col for key e fractions for o seguinte:

1 -> 1.0, 3 -> 0.5

Após a transformação:

+---+-----+
|key|value|
+---+-----+
|  1|    1|
|  1|    2|
|  3|    2|
+---+-----+
Resumo

Calcula as estatísticas fornecidas para colunas numéricas e de string.

Se nenhuma estatística for fornecida, todas as seguintes estatísticas serão calculadas:

  • COUNT
  • MEAN
  • STDDEV
  • MIN
  • quartis aproximados (percentis em 25%, 50% e 75%)
  • MAX
Parâmetro Descrição
statistics

Uma lista de estatísticas separada por vírgulas.

Os valores suportados são:

  • COUNT
  • MEAN
  • STDDEV
  • MIN
  • um ou mais percentis aproximados arbitrários especificados como uma porcentagem (por exemplo, 75%)
  • MAX

Exemplo: count, mean, stddev, min, 27%, 41%, 95%, max

Exemplo

Antes da transformação:

+----------+------+-----------------+--------+
|department|gender|avg(salary)      |max(age)|
+----------+------+-----------------+--------+
|Eng       |female|900.0            |21      |
|Sport     |null  |1250.0           |28      |
|Art       |null  |2000.0           |32      |
|Eng       |null  |933.3333333333334|21      |
|Art       |female|2500.0           |30      |
|Eng       |male  |1000.0           |10      |
|null      |null  |1412.5           |32      |
|Sport     |male  |1250.0           |28      |
|Art       |male  |1000.0           |32      |
+----------+------+-----------------+--------+

Suponha que statistics seja count, mean, stddev, min, 27%, 41%, 95%, max.

Após a transformação:

+-------+----------+-----+------+----------------+----------------+
|summary|department|group|gender|salary          |age             |
+-------+----------+-----+------+----------------+----------------+
|count  |8         |8    |8     |8               |8               |
|mean   |null      |null |null  |1412.5          |20.5            |
|stddev |null      |null |null  |749.166203188585|8.76682056718072|
|min    |Art       |A    |female|800             |10              |
|27%    |null      |null |null  |1000            |13              |
|41%    |null      |null |null  |1000            |19              |
|95%    |null      |null |null  |3000            |32              |
|max    |Sport     |E    |male  |3000            |32              |
+-------+----------+-----+------+----------------+----------------+