Ir para conteúdo principal Pular para conteúdo complementar

Adicionando transformações SQL

Você pode incluir tabelas baseadas em SQL em tarefas de transformação. Uma transformação SQL permite inserir uma consulta SQL SELECT em um pipeline para definir transformações complexas ou simples. Você pode deixar o SQL assistant gerar uma consulta desde um prompt de texto usando IA generativa. Você também pode usar macros para adaptar a consulta para execução se um carregamento inicial ou um carregamento incremental for executado.

Para obter mais informações sobre como criar uma tarefa de transformação, consulte Transformando dados.

Adicionando uma transformação SQL

Para adicionar uma transformação SQL em uma tarefa de dados Transformar:

  1. Em Transformar, selecione os conjuntos de dados a serem incluídos na consulta e clique em Adicionar transformação SQL.

    Defina o nome da transformação em Nome. Para obter mais informações sobre as outras configurações, consulte Configurações.

    Clique em Adicionar quando estiver pronto para criar a transformação SQL.

    Editar transformação SQL é exibido.

  2. Escreva a consulta para retornar a tabela baseada em SQL no painel de consulta.

    Para obter mais informações, consulte Editando a consulta SQL.

  3. Clique em Executar consulta.

    Isso buscará metadados e uma pré-visualização dos dados.

  4. Revise os parâmetros em Parâmetros.

    Para obter mais informações, consulte Parâmetros.

  5. Defina uma chave primária em Metadados.

    Para obter mais informações, consulte Metadados.

  6. Quando estiver satisfeito com os resultados da consulta, clique em Salvar e fechar. O conjunto de dados agora é adicionado à lista de destinos e você pode visualizá-lo.

Editando a consulta SQL

Digite a consulta para retornar a tabela baseada em SQL no painel de consulta. A consulta só pode ler os conjuntos de dados de origem selecionados, mas você pode adicionar mais conjuntos de dados de origem com Adicionar.

  • Você pode criar uma instrução para carregar um conjunto de dados de Objetos. Clique em mais e, em seguida, em Gerar instrução select no editor.

  • Você pode copiar o nome de um conjunto de dados para a área de transferência clicando em mais e depois em Copiar.

  • Clique em > para mover um conjunto de dados ou nome de coluna para o editor.

  • Clique em Pesquisar para pesquisar e substituir texto no editor.

Nota informativaVocê pode usar o SQL assistant para gerar uma consulta usando IA generativa. Para obter mais informações, consulte Gerando uma transformação SQL a partir de um prompt de texto. O Assistente SQL não está disponível no Qlik Cloud Government.

Se a carga incremental for usada, você poderá usar Macros para adaptar a consulta para execução se uma carga inicial ou uma carga incremental for executada.

Para obter mais informações, consulte Usando macros para adaptar a consulta ao tipo de carregamento.

Atalhos do teclado

Nota informativaOs atalhos de teclado são fornecidos assumindo que você está trabalhando no Windows. Para o macOS, use Comando em vez de Ctrl.
  • Ctrl+F Pesquisar e substituir

  • Ctrl+/ Comentar/remover comentário na linha atual

  • Ctrl+Enter Executar a consulta

  • Ctrl+Z Desfazer

  • Ctrl+Y Refazer

Visualizando resultados

Você pode visualizar os resultados usando uma amostra dos dados em Resultados.

Nota informativaA visualização de dados deve estar habilitada no nível do locatário no Administração. Você pode encontrar a opção Visualizando dados no Data Integration em Configurações, em Controle de recursos.

Você deve receber as seguintes funções para poder visualizar dados:

  • Pode visualizar dados no espaço onde reside a conexão.

  • Pode visualizar no espaço onde reside o projeto.

Os resultados usando uma amostra dos dados são exibidos. Você pode definir quantas linhas de dados incluir na amostra com Número de linhas.

  • Clique em Última consulta executada para ver a última hora de execução e a duração da última consulta executada.

Filtrando os resultados

Você pode filtrar os resultados por uma ou mais colunas.

  • Clique em mais na primeira coluna para filtrar e depois em Filtrar.

    Selecione qual operador usar e qual valor filtrar.

    Você pode adicionar mais filtros de coluna clicando em Adicionar filtro.

O filtro afetará apenas os dados de amostra existentes.

Ordenando os resultados

Você pode classificar a amostra de dados por uma coluna específica.

  • Clique em mais na coluna para classificar e depois em Classificar em ordem crescente ou Classificar em ordem decrescente.

A classificação afetará apenas os dados de amostra existentes. Se você usava um filtro para incluir apenas pedidos de 2024 e inverter a ordem de classificação, os dados de amostra ainda conterão apenas pedidos de 2024.

Gerenciando as colunas exibidas

Você pode selecionar quais colunas exibir nos resultados. A seleção não é salva quando você salva a transformação.

  • Para ocultar uma coluna, clique em mais na coluna e depois em Ocultar coluna.

  • Para gerenciar a exibição de todas as colunas, clique em mais em qualquer coluna e depois em Colunas exibidas.

Parâmetros

Clique em Parâmetros para alterar os parâmetros na consulta SELECT. Os parâmetros devem ser mapeados para os objetos de origem ou de destino.

Os parâmetros são mapeados automaticamente quando você:

  • Use Gerar instrução select no editor em Objetos.

  • Clique em > para mover um conjunto de dados ou nome de coluna para o editor.

  • Um nome de parâmetro corresponde a um nome de tabela das tabelas em Objetos.

Nota informativaSe você usar nomes de parâmetros arbitrários, deverá mapear os parâmetros manualmente. Somente os nomes de parâmetros que correspondem aos nomes de conjuntos de dados serão mapeados automaticamente.

Você pode mapear para

  • Estruturas de histórico tipo 2 (_history)

  • Estruturas atuais

  • Objetos alvo

    Você só pode mapear objetos de destino quando um parâmetro é definido dentro de uma macro incremental.

Nota de dicaVocê pode substituir um parâmetro por uma referência para ter uma consulta mais fácil de ler. Altere o valor em Parâmetro e a referência na consulta SELECT também será alterada.

Metadados

Você pode editar as configurações de metadados em Metadados.

  • Defina chaves primárias na coluna Chave.

  • Defina se a coluna é anulável na coluna Anulável.

  • Selecione uma coluna e clique em Editar para definir o nome da coluna, chave, anulável e tipo de dados.

Executando a consulta

Você pode executar a consulta a qualquer momento durante o desenvolvimento clicando em Executar consulta. Na primeira vez que você executar uma consulta, os metadados serão recuperados. Quando a consulta for executada, você pode ir para Metadados e definir uma chave primária, que é necessária para que a transformação seja concluída.

Nota informativaSe o editor contiver mais de uma consulta, você pode executar uma única consulta selecionando a consulta e clicando em Executar consulta.

Usando macros para adaptar a consulta ao tipo de carregamento

Se a carga incremental for usada, você poderá usar Macros para adaptar a consulta para execução se uma carga inicial ou uma carga incremental for executada.

Selecione a macro e adicione a consulta dentro da respectiva cláusula.

  • Q_RUN_INCREMENTAL adiciona uma cláusula em que você pode colocar uma consulta que só é executada quando um carregamento inicial é executado.

  • Q_RUN_INITIAL_LOAD adiciona uma cláusula em que você pode colocar uma consulta que só é executada quando um carregamento inicial é executado.

Não é necessário especificar a consulta completa com cada macro. Você pode ajustar ou adicionar código com base no seu caso de uso.

Caso de uso: filtro incremental usando intervalo de datas:

Neste caso de uso, um conjunto de dados de pedidos precisa ser transformado com SQL personalizado. Como este é um conjunto de dados grande, você deseja incluir filtragem incremental para garantir que a carga incremental considere apenas os pedidos das últimas 12 horas.

Esta é a consulta base:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM “mydb”.”myStorageTask”.”ORDER” O JOIN “mydb”.”myStorageTask”.”ORDER_DETAIL” OD ON O.ORDER_ID = OD.ORDER_ID

Este é o filtro a ser aplicado durante a execução incremental, onde você considera apenas os pedidos que foram adicionados nas últimas 12 horas:

WHERE OD.UPDATE_DTM > DATEADD(hour, -12, CURRENT_TIMESTAMP())
Nota de dicaAo implementar uma tabela baseada em SQL, é recomendado substituir os nomes das tabelas pela notação ${TABLE}. Isso evita a codificação permanente de bancos de dados e nomes de esquemas que podem mudar de ambiente para ambiente, por exemplo, ao passar do desenvolvimento para a produção.

Esta é a consulta completa, usando a macro de filtro e com os nomes das tabelas substituídos pela notação ${TABLE}:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID {{#QLIK_FUNC_IF Q_RUN_INCREMENTAL}} WHERE OD.UPDATE_DTM > DATEADD(hour, -12, CURRENT_TIMESTAMP() ) {{/QLIK_FUNC_IF}}

Isso resulta em uma consulta de carregamento inicial:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID

E uma consulta de carregamento incremental:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID WHERE OD.UPDATE_DTM > DATEADD(hour, -12, CURRENT_TIMESTAMP() )

Caso de uso: filtro incremental usando dados no alvo:

Neste caso de uso, um conjunto de dados de pedidos precisa ser transformado com SQL personalizado. Como os pedidos são um grande conjunto de dados, você deseja incluir filtragem incremental para garantir que a carga incremental considere apenas registros de detalhes do pedido mais recentes que os dados na tabela de destino. Você também deseja marcar se uma linha foi processada pelo carregamento inicial ou por um carregamento incremental.

Nota informativaComo você pode ver neste exemplo, as macros podem ser usadas para ajustar qualquer parte da consulta para carregamento inicial ou carregamento incremental.

Esta é a consulta base:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM “mydb”.”myStorageTask”.”ORDER” O JOIN “mydb”.”myStorageTask”.”ORDER_DETAIL” OD ON O.ORDER_ID = OD.ORDER_ID

Este é o filtro a ser aplicado durante a execução incremental. “ORDERS_DERIVED” é o nome do conjunto de dados de destino.

WHERE OD.UPDATE_DTM > = (SELECT MAX(LAST_UPDATE_DTM) FROM “mydb”.”myTrasformTask”.”ORDERS_DERIVED” )
Nota de dicaO carregamento incremental também pode mapear uma notação ${TABLE} para os objetos de destino criados pela tarefa de transformação.

Esta é a consulta completa, usando a macro de filtro e com os nomes das tabelas substituídos pela notação ${TABLE}. LOADED_BY é definido como INIT se o carregamento for inicial e INCR se o carregamento for incremental:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT, OD.LAST_UPDATE_DTM, {{#QLIK_FUNC_IF Q_RUN_INITIAL_LOAD}} ‘INIT’ as LOADED_BY {{/QLIK_FUNC_IF}} {{#QLIK_FUNC_IF Q_RUN_INCREMENTAL}} ‘INCR’ as LOADED_BY {{/QLIK_FUNC_IF}} FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID {{#QLIK_FUNC_IF Q_RUN_INCREMENTAL}} WHERE OD.UPDATE_DTM >= (SELECT MAX(LAST_UPDATE_DTM) FROM ${TARGET_TABLE} ) {{/QLIK_FUNC_IF}}

Isso resulta em uma consulta de carregamento inicial:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT, OD.LAST_UPDATE_DTM, ‘INIT’ as LOADED_BY FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID

E uma consulta de carregamento incremental:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT, OD.LAST_UPDATE_DTM, ‘INCR’ as LOADED_BY FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID WHERE OD.UPDATE_DTM >= (SELECT MAX(LAST_UPDATE_DTM) FROM ${TARGET_TABLE} )

Configurações

Clique em Configurações para editar as configurações da transformação SQL.

  • Insira um nome para o conjunto de dados de destino em Nome.

    Você também pode adicionar uma descrição mais longa em Descrição.

  • Em Materialização, selecione se a saída transformada deve ser materializada ou não. Você pode optar por herdar a configuração das configurações da tarefa de dados.

    • On criará tabelas e tratará do processamento ELT associado.

    • Off criará visualizações que realizam transformações dinamicamente.

  • Em Armazenamento de Dados Históricos (Tipo 2), selecione se você deseja manter os dados históricos. Você pode optar por herdar a configuração das configurações da tarefa de dados. Essa configuração exige que a opção Materialização esteja ativada.

  • A carga incremental permite ajustar a consulta para uma carga de dados incremental aplicando filtros ou outras condições para reduzir o conjunto de dados que está sendo processado usando macros. A carga incremental só estará disponível se os dados forem materializados como tabelas.

    • Quando a Carga incremental está Ativada

      A primeira execução da tarefa realizará um carregamento inicial, inserindo todos os resultados da consulta em sua tabela de destino. As execuções subsequentes executarão cargas incrementais aproveitando filtros ou condições específicas que você definiu para processamento incremental. Durante o carregamento incremental, a tarefa processará dados apenas como uma atualização ou inserção; as exclusões não são gerenciadas.

    • Quando a Carga incremental está Desativada

      A primeira execução da tarefa realizará um carregamento inicial, inserindo todos os resultados da consulta em sua tabela de destino. As execuções subsequentes processarão todos os resultados da consulta comparando-os com sua tabela de destino e processando registros novos, alterados ou excluídos.

    Nota informativaSe a consulta selecionar todos os registros que deveriam existir no destino, desative a Carga incremental. Os registros que não forem selecionados serão excluídos do alvo.
  • Prática recomendada

    • Quando você adiciona uma transformação SQL, uma chave primária não é definida automaticamente. Adicione uma chave ao conjunto de dados na guia Conjunto de dados.

    • Não crie cabeçalhos de coluna na saída transformada manualmente.

    • Evite usar SELECT com *, pois isso pode retornar colunas diferentes todas as vezes que a consulta for executada. Se houve alteração no esquema, altere a consulta de acordo e execute Descrever tabela de novo. Em seguida, você poderá editar colunas e ajustar tabelas.

    Esta página ajudou?

    Se você encontrar algum problema com esta página ou seu conteúdo – um erro de digitação, uma etapa ausente ou um erro técnico – avise-nos!