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.
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.
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".
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
eBANK_EU
, digiteBANK
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.
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 (comoBANK_${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.
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.
Você pode adicionar vários operadores de origem em um fluxo de dados.
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.
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
*.html | Corresponde 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?*.java | Corresponde 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]*json | Corresponde 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/**.csv | Corresponde a todos os arquivos com extensão csv que estão na pasta directory3 e suas subpastas |
directory3/*.csv | Corresponde 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. |
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.
-
No painel Selecionar entidade do dado, selecione Procurar por padrão.
-
No painel Pesquisar entidades de dados por padrão, selecione Testar padrão no menu Mais ações.
-
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óriodepartment1/2020
. Você pode usar a sintaxe de parâmetro${}
no campo Padrão de pesquisa. -
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
-
Selecione Padrão de teste.
Verifique se os nomes do arquivo de teste são retornados no bloco Nome do arquivo de resultado.
-
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.
-
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.
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:
- No fluxo de dados, designe parâmetros para o esquema de origem (oferta de BICC) e a entidade de dados (VO de BICC).
- Crie e publique uma tarefa de integração para o fluxo de dados parametrizado.
- 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.
- 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.
Você pode adicionar vários operadores de destino a um fluxo de dados. Cada destino pode ter apenas uma porta de entrada.
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.
A guia Dados exibe os dados transformados com base nos operadores aplicados no fluxo de dados.
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.
A guia Mapear só está disponível para um operador de destino.
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:
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.
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.
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.
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.
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 () para limpar essa regra.
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
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.
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ção | Descrição | Exemplo |
---|---|---|
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
A Oracle aplica a função hash à combinação de |
|
Função | Descrição | Exemplo |
---|---|---|
ABS(numeric) | Retorna a potência absoluta do valor numeric . | ABS(-1) |
CEIL(numeric) | Retorna o menor inteiro não maior que o valor numeric | CEIL(-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:
|
|
Função | Descrição | Exemplo |
---|---|---|
CURRENT_DATE |
Retorna a data atual. | CURRENT_DATE retorna 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 Padrões de formato de data suportados:
|
|
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. |
|
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,
|
|
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,
|
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 . |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Retorna o número de meses entre 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. |
|
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: 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: 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 |
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.
Se Se |
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 '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çã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 | Descrição | Exemplo |
---|---|---|
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('-', 'Hello', 'Oracle') retorna Hello-Oracle
Se um filho da função for um array, o array será nivelado:
|
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('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 Se | 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,
| Exemplo de número: Exemplo de data: |
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ção | Descrição | Exemplo |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Retorna 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 |
AND | O 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" |
OR | O 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" |
NOT | O operador lógico NOT. | |
LIKE | Executa 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' |
BETWEEN | Avalia um intervalo. | FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007 |
IN | Testa se uma expressão corresponde a uma lista de valores. | FILTER_2.ORDERS.ORDER_ID IN (1003, 1007) |
Função | Descrição | Exemplo |
---|---|---|
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ção | Descrição | Exemplo |
---|---|---|
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ção | Descrição | Exemplo |
---|---|---|
SCHEMA_OF_JSON(string) | Faz parsing de uma string JSON e infere o esquema no formato DDL. |
|
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.
|
|
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_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_ARRAY(column[,column]*) | Cria uma nova coluna como tipo Array. As colunas de entrada devem todas ter o mesmo tipo de dados. |
|
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ção | Descrição | Exemplo |
---|---|---|
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 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. |
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.
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ção | Descrição | Exemplo |
---|---|---|
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
A Oracle aplica a função hash à combinação de |
|
Função | Descrição | Exemplo |
---|---|---|
ABS(numeric) | Retorna a potência absoluta do valor numeric . | ABS(-1) |
CEIL(numeric) | Retorna o menor inteiro não maior que o valor numeric | CEIL(-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:
|
|
Função | Descrição | Exemplo |
---|---|---|
CURRENT_DATE |
Retorna a data atual. | CURRENT_DATE retorna 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 Padrões de formato de data suportados:
|
|
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. |
|
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,
|
|
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,
|
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 . |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Retorna o número de meses entre 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. |
|
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: 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: 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 |
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.
Se Se |
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 '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çã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 | Descrição | Exemplo |
---|---|---|
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('-', 'Hello', 'Oracle') retorna Hello-Oracle
Se um filho da função for um array, o array será nivelado:
|
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('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 Se | 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,
| Exemplo de número: Exemplo de data: |
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ção | Descrição | Exemplo |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Retorna 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 |
AND | O 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" |
OR | O 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" |
NOT | O operador lógico NOT. | |
LIKE | Executa 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' |
BETWEEN | Avalia um intervalo. | FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007 |
IN | Testa se uma expressão corresponde a uma lista de valores. | FILTER_2.ORDERS.ORDER_ID IN (1003, 1007) |
Função | Descrição | Exemplo |
---|---|---|
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ção | Descrição | Exemplo |
---|---|---|
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ção | Descrição | Exemplo |
---|---|---|
SCHEMA_OF_JSON(string) | Faz parsing de uma string JSON e infere o esquema no formato DDL. |
|
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.
|
|
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_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_ARRAY(column[,column]*) | Cria uma nova coluna como tipo Array. As colunas de entrada devem todas ter o mesmo tipo de dados. |
|
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ção | Descrição | Exemplo |
---|---|---|
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 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. |
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.
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.
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')
eUPPER('oracle')
.Coloque um nome de atributo entre aspas duplas. Por exemplo:
UPPER("Sales")
eCONCAT(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ção | Descrição | Exemplo |
---|---|---|
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
A Oracle aplica a função hash à combinação de |
|
Função | Descrição | Exemplo |
---|---|---|
ABS(numeric) | Retorna a potência absoluta do valor numeric . | ABS(-1) |
CEIL(numeric) | Retorna o menor inteiro não maior que o valor numeric | CEIL(-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:
|
|
Somente o operador de Expressão suporta funções de matriz.
Função | Descrição | Exemplo |
---|---|---|
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 |
ELEMENT_AT(array(1, 2, 3), 2) retorna 2 |
Função | Descrição | Exemplo |
---|---|---|
CURRENT_DATE |
Retorna a data atual. | CURRENT_DATE retorna 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 Padrões de formato de data suportados:
|
|
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. |
|
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,
|
|
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,
|
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 . |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Retorna o número de meses entre 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. |
|
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: 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: 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 |
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.
Se Se |
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 '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çã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 | Descrição | Exemplo |
---|---|---|
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('-', 'Hello', 'Oracle') retorna Hello-Oracle
Se um filho da função for um array, o array será nivelado:
|
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('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 Se | 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,
| Exemplo de número: Exemplo de data: |
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ção | Descrição | Exemplo |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Retorna 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 |
AND | O 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" |
OR | O 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" |
NOT | O operador lógico NOT. | |
LIKE | Executa 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' |
BETWEEN | Avalia um intervalo. | FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007 |
IN | Testa se uma expressão corresponde a uma lista de valores. | FILTER_2.ORDERS.ORDER_ID IN (1003, 1007) |
Função | Descrição | Exemplo |
---|---|---|
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ção | Descrição | Exemplo |
---|---|---|
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ção | Descrição | Exemplo |
---|---|---|
SCHEMA_OF_JSON(string) | Faz parsing de uma string JSON e infere o esquema no formato DDL. |
|
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.
|
|
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_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_ARRAY(column[,column]*) | Cria uma nova coluna como tipo Array. As colunas de entrada devem todas ter o mesmo tipo de dados. |
|
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ção | Descrição | Exemplo |
---|---|---|
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 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. |
A matriz retornada é: [1,5,6] |
Você pode duplicar expressões que foram adicionadas a um operador de expressão.
Você pode alterar a ordem das expressões que foram adicionadas a um operador de expressão.
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.
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ção | Descrição | Exemplo |
---|---|---|
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,
Exemplo 1: Sem agrupamento
Exemplo 2: Agrupar pelo
|
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ção | Descrição | Exemplo |
---|---|---|
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 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. |
A matriz retornada é: [1,5,6] |
Operador Distinto
Use o operador distinto para retornar linhas distintas com valores exclusivos.
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.
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.
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:
- 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.
- No painel Adicionar condição de classificação, selecione o atributo pelo qual classificar os dados.
- Para filtrar atributos usando padrões de nome, digite um padrão de nome, por exemplo, *CITY*.
- 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.
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:
Para editar 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:
- Na guia Detalhes, vá para a seção Condições de classificação.
-
Para excluir condições de classificação, uma a uma, selecione o menu Ações (
) correspondente à condição de classificação que você deseja excluir.
- 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.
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.
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 |
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 |
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.
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.
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
Departamento | LOCATION-ID | Warehouse |
---|---|---|
IT | 1400 | San Francisco |
Shipping | 1500 | Austin |
Accounting | 1700 | New Jersey |
Entidade de Dados 2
Departamento | Warehouse | LOCATION-ID |
---|---|---|
Benefits | Denver | 1600 |
IT | San Francisco | 1400 |
Entidade de Dados Resultante
Departamento | LOCATION-ID | Warehouse |
---|---|---|
Shipping | 1500 | Austin |
Accounting | 1700 | New Jersey |
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
Departamento | LOCATION-ID | Warehouse |
---|---|---|
IT | 1400 | San Francisco |
Shipping | 1500 | Austin |
Accounting | 1700 | New Jersey |
Entidade de Dados 2, entrada principal
Department-Name | Local | Warehouse-City |
---|---|---|
Benefits | 1600 | Denver |
IT | 1400 | San Francisco |
Entidade de Dados Resultante
Department-Name | Local | Warehouse-City |
---|---|---|
Benefits | 1600 | Denver |
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.
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.
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
Departamento | LOCATION-ID | Warehouse |
---|---|---|
IT | 1400 | San Francisco |
Shipping | 1500 | Austin |
Accounting | 1700 | New Jersey |
Entidade de Dados 2
Departamento | Warehouse | LOCATION-ID |
---|---|---|
Benefits | Denver | 1600 |
IT | San Francisco | 1400 |
Entidade de Dados Resultante
Departamento | LOCATION-ID | Warehouse |
---|---|---|
IT | 1400 | San Francisco |
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
Departamento | LOCATION-ID | Warehouse |
---|---|---|
IT | 1400 | San Francisco |
Shipping | 1500 | Austin |
Accounting | 1700 | New Jersey |
Entidade de Dados 2, entrada principal
Department-Name | Local | Warehouse-City |
---|---|---|
Benefits | 1600 | Denver |
IT | 1400 | San Francisco |
Entidade de Dados Resultante
Department-Name | Local | Warehouse-City |
---|---|---|
IT | 1400 | San Francisco |
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.
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ção | Condição |
---|---|
CONDITION1 | SPLIT_1.BANK.BANK_ID<102 |
CONDITION2 | SPLIT_1.BANK.BANK_ID<104 |
UNMATCHED | A 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_ID | BANK_NAME |
---|---|
101 | A Bank 101 |
102 | B Bank 102 |
103 | C Bank 103 |
104 | D Bank 104 |
Saída de Condition1, Primeira Condição de Correspondência
CONDITION1 retorna uma linha correspondente.
BANK_ID | BANK_NAME |
---|---|
101 | A 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_ID | BANK_NAME |
---|---|
102 | B Bank 102 |
103 | C 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_ID | BANK_NAME |
---|---|
104 | D Bank 104 |
Saída de Condition1, Todas as Condições de Correspondência
CONDITION1 retorna uma linha correspondente.
BANK_ID | BANK_NAME |
---|---|
101 | A 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_ID | BANK_NAME |
---|---|
101 | A Bank 101 |
102 | B Bank 102 |
103 | C 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_ID | BANK_NAME |
---|---|
104 | D Bank 104 |
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.
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ção | Descrição | Exemplo |
---|---|---|
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
A Oracle aplica a função hash à combinação de |
|
Função | Descrição | Exemplo |
---|---|---|
ABS(numeric) | Retorna a potência absoluta do valor numeric . | ABS(-1) |
CEIL(numeric) | Retorna o menor inteiro não maior que o valor numeric | CEIL(-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:
|
|
Função | Descrição | Exemplo |
---|---|---|
CURRENT_DATE |
Retorna a data atual. | CURRENT_DATE retorna 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 Padrões de formato de data suportados:
|
|
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. |
|
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,
|
|
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,
|
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 . |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Retorna o número de meses entre 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. |
|
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: 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: 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 |
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.
Se Se |
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 '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çã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 | Descrição | Exemplo |
---|---|---|
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('-', 'Hello', 'Oracle') retorna Hello-Oracle
Se um filho da função for um array, o array será nivelado:
|
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('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 Se | 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,
| Exemplo de número: Exemplo de data: |
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ção | Descrição | Exemplo |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Retorna 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 |
AND | O 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" |
OR | O 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" |
NOT | O operador lógico NOT. | |
LIKE | Executa 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' |
BETWEEN | Avalia um intervalo. | FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007 |
IN | Testa se uma expressão corresponde a uma lista de valores. | FILTER_2.ORDERS.ORDER_ID IN (1003, 1007) |
Função | Descrição | Exemplo |
---|---|---|
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ção | Descrição | Exemplo |
---|---|---|
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ção | Descrição | Exemplo |
---|---|---|
SCHEMA_OF_JSON(string) | Faz parsing de uma string JSON e infere o esquema no formato DDL. |
|
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.
|
|
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_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_ARRAY(column[,column]*) | Cria uma nova coluna como tipo Array. As colunas de entrada devem todas ter o mesmo tipo de dados. |
|
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ção | Descrição | Exemplo |
---|---|---|
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 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. |
A matriz retornada é: [1,5,6] |
Você pode editar qualquer condição de divisão, exceto a condição Sem Correspondência.
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.
É possível excluir qualquer condição de divisão, exceto a condição Sem Correspondência.
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.
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
STORE | PRODUCT | SALES |
---|---|---|
AB Store | Television | 2 |
AB Store | Television | 4 |
Country-Store | Television | 6 |
Country-Store | Refrigerator | 8 |
E-Store | Coffee maker | 10 |
Saída Dinâmica: Agrupar por STORE, Chave Dinâmica PRODUCT
STORE | TELEVISION | REFRIGERATOR | COFFEE MAKER |
---|---|---|---|
AB-Store | 6 | - | - |
Country-Store | 6 | 8 | - |
E-Store | - | - | 10 |
Saída Dinâmica: Sem Agrupar por, Chave Dinâmica PRODUCT
TELEVISION | REFRIGERATOR | COFFEE MAKER |
---|---|---|
12 | 8 | 10 |
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.
Uma ou mais expressões de função de agregação são necessárias para um operador dinâmico.
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.
No painel Adicionar Expressão, digite um nome para a expressão no campo Identifier ou deixe o nome como está.
(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.Em Atributos de Origem, selecione Padrão e Adicionar padrão.
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.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
.- 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.
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.
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ção Descrição Exemplo 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.
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 origemDISCOUNT_RATE
eDISCOUNT_VALUE
, será possível especificar uma função de agregação comoSUM(numeric)
para aplicar a função em todos os atributos que correspondem ao padrão.%MACRO_INPUT%
substitui o espaço reservadonumeric
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 reservadonumeric
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 tipoVARCHAR
eMIN
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)
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.
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_ID | CUSTOMER_ID | AMOUNT |
---|---|---|
1 | 101 | 2500 |
2 | 102 | 1110 |
3 | 103 | 500 |
4 | 104 | 400 |
5 | 105 | 150 |
6 | 102 | 450 |
Entidade de Dados 2, origem de entrada de lookup
CUSTOMER_ID | NAME |
---|---|
101 | Peter |
102 | Paul |
106 | Mary |
102 | Pauline |
Saída da Lookup
PAYMENT_ID | CUSTOMER_ID | AMOUNT | CUSTOMER_ID | NAME |
---|---|---|---|---|
1 | 101 | 2500 | 101 | Peter |
2 | 102 | 1110 | 102 | Paul |
3 | 103 | 500 | null | null |
4 | 104 | 400 | null | null |
5 | 105 | 150 | null | null |
6 | 102 | 450 | 102 | Paul |
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.
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ção | Descrição | Exemplo |
---|---|---|
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
A Oracle aplica a função hash à combinação de |
|
Função | Descrição | Exemplo |
---|---|---|
ABS(numeric) | Retorna a potência absoluta do valor numeric . | ABS(-1) |
CEIL(numeric) | Retorna o menor inteiro não maior que o valor numeric | CEIL(-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:
|
|
Função | Descrição | Exemplo |
---|---|---|
CURRENT_DATE |
Retorna a data atual. | CURRENT_DATE retorna 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 Padrões de formato de data suportados:
|
|
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. |
|
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,
|
|
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,
|
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 . |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Retorna o número de meses entre 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. |
|
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: 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: 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 |
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.
Se Se |
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 '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çã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 | Descrição | Exemplo |
---|---|---|
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('-', 'Hello', 'Oracle') retorna Hello-Oracle
Se um filho da função for um array, o array será nivelado:
|
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('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 Se | 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,
| Exemplo de número: Exemplo de data: |
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ção | Descrição | Exemplo |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Retorna 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 |
AND | O 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" |
OR | O 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" |
NOT | O operador lógico NOT. | |
LIKE | Executa 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' |
BETWEEN | Avalia um intervalo. | FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007 |
IN | Testa se uma expressão corresponde a uma lista de valores. | FILTER_2.ORDERS.ORDER_ID IN (1003, 1007) |
Função | Descrição | Exemplo |
---|---|---|
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ção | Descrição | Exemplo |
---|---|---|
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ção | Descrição | Exemplo |
---|---|---|
SCHEMA_OF_JSON(string) | Faz parsing de uma string JSON e infere o esquema no formato DDL. |
|
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.
|
|
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_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_ARRAY(column[,column]*) | Cria uma nova coluna como tipo Array. As colunas de entrada devem todas ter o mesmo tipo de dados. |
|
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ção | Descrição | Exemplo |
---|---|---|
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 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. |
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.
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.
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.
Tarefa | Requisito |
---|---|
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:
Para restringir os usuários a chamar uma função específica em um espaço de trabalho:
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:
|
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.
A função que você deseja usar com um operador de função deve ser implantada em um aplicativo no Oracle Cloud Infrastructure Functions.
- Na tela, selecione o operador de função.
- Na guia Detalhes do painel Propriedades, para Função do OCI, clique em Selecionar.
- No painel, selecione o Compartimento que tem o aplicativo OCI Functions no qual a função que você deseja usar foi implantada.
- Selecione o Aplicativo no OCI Functions que tem a função implantada.
- Na seção Função do OCI, selecione a função.
- Selecione OK.
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.
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.
- Em Propriedades da função, selecione Adicionar propriedade.
- 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.
- 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.
- Selecione o Tipo de dados da propriedade.
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.
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.
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.
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 no final da linha.
Não é possível excluir o elemento do esquema principal.
- No painel Adicionar Propriedade, selecione Adicionar.
- 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.
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
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
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
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 |
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
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.
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.
O procedimento a seguir pressupõe que você tenha selecionado um nó Array a ser convertido em uma String, se aplicável.
Ao configurar um operador nivelado em um fluxo de dados, você pode reverter um nivelamento limpando o caminho Nivelado por.
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.
Veja uma lista das funções de tabela incorporadas suportadas pelo operador de função de tabela.
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:
|
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 quecol1
é a primeira coluna ecol2
é a segunda antes da transformação. A primeira coluna de cada linha são os valores distintos decol1
. - 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 |
col2 |
Nome da segunda coluna. Consulte a nota após esta tabela para saber as limitações. Itens distintos de |
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 |
+----------+---+---+---+
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: |
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 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:
|
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 |
+---+---+---+
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 |
+---+---+
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 Por exemplo, |
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]|
+------------------------+
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:
O parâmetro |
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 |
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|
+---+--------+----+
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: Um valor substituto é convertido no tipo de dados da coluna. Um valor de substituição deve ser do seguinte tipo:
|
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 |
+---+-------+---+
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 |
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: A chave e o par de valores de substituição devem ter o mesmo tipo. Somente os seguintes tipos são suportados:
|
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 |
+----+-------+----+
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. |
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: |
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 |
+----------+-------+-----------------+--------+
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: |
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: |
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 Por exemplo, Se uma fração não for especificada, zero será assumido. |
sample_size |
Se |
seed |
Use qualquer número aleatório em |
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|
+---+-----+
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:
Exemplo: |
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 |
+-------+----------+-----+------+----------------+----------------+