Ingestão de dados, deslocamento no tempo e reversão de tabela

Este tutorial o orienta no processo de ingestão de dados em watsonx.data, na execução de viagens no tempo e nas operações de reversão de tabela.

Ingestão e

A ingestão de dados é o processo de importação e carregamento de dados no watsonx.data. Você pode realizar a ingestão de dados em watsonx.data nos seguintes métodos:

  • Ingerir dados usando a opção Criar tabela a partir de arquivo na página Gerenciador de dados.
  • Ingestão de dados por meio de consultas SQL.
  • Ingestão de dados usando a ferramenta de linha de comando " IBM-lh.
  • Ingestão de dados usando o mecanismo Spark.

Para obter mais informações, consulte Ingestão de dados.

Viagem no tempo

O recurso de viagem no tempo nas tabelas Apache Iceberg permite que você busque e inspecione o histórico da tabela. Ele usa snapshots de tabela para dar suporte às funções de viagem no tempo. Um instantâneo de tabela representa o estado de uma tabela em um determinado momento. O Iceberg gera o registro de instantâneo da tabela quando a tabela é criada ou modificada (inserção, atualização, exclusão). Você pode usar esse registro de instantâneo para consultar e ver os detalhes da tabela.

As tabelas Hive não são compatíveis com o recurso de viagem no tempo.

Retroceder
O recurso de reversão de tabela permite que você reverta uma tabela para um ponto anterior no tempo usando instantâneos de tabela.

Cenário de caso de uso

Considere que você é um engenheiro de dados da sua empresa e tem a tarefa de gerenciar os registros de carros no banco de dados da empresa. Faça o upload dos registros de dados existentes no armazenamento. Adicionar um novo conjunto de dados à tabela existente. Após a revisão, você percebe que o novo conjunto de dados adicionado não é apropriado e decide reverter a tabela para um estado anterior.

O vídeo a seguir fornece um método visual para aprender os conceitos e as tarefas desta documentação.

Objetivo

  • Crie uma tabela e carregue os dados de amostra usando o mecanismo Spark em uma tabela.
  • Carregue mais registros na tabela " cars.
  • Recupere registros de tabela usando instantâneos de tabela.
  • Executar operações de reversão de tabela.

Antes de Iniciar

  • Faça o download do arquivo cars.csv emhttps://ibm.box.com/v/data-cars-csv.
  • Você deve ter uma instância do plano Lite provisionada.
  • A instância do plano Lite deve incluir os mecanismos Spark e Presto em estado de execução.
  • Associe um catálogo aos mecanismos Presto e Spark. Aqui, o catálogo Apache Iceberg.

Procedimento

Criação de tabela e carregamento de dados

A seção o orienta no procedimento para criar uma tabela chamada " cars e ingerir os dados presentes no arquivo " cars.csv usando o mecanismo Spark.

  1. Efetue login no console do watsonx.data.

  2. No menu de navegação, selecione Gerenciador de dados.

  3. Clique em Ingerir dados e selecione Sistema local. Para obter mais informações sobre como ingerir dados, consulte Ingerir dados do sistema local.

  4. Clique na guia Browse data (Procurar dados ). Atualize o catálogo do Iceberg para visualizar o novo esquema e a nova tabela com dados. Você pode visualizar as guias Colunas da tabela, Viagem no tempo, Amostra de dados e DDL.

  5. Clique em Viagem no tempo. Você pode ver que a tabela tem registros " 406.

Carregar mais registros na tabela

Execute várias transações (duas transações) para atualizar a tabela " cars. Na primeira transação, ingira dois outros registros de carro para o modelo ' TESLA e, na segunda transação, ingira um registro para o modelo Kia Optima.

Para fazer isso:

  1. Vá para o espaço de trabalho Query.

  2. Selecione o motor Presto.

  3. Use a seguinte consulta SQL para inserir o primeiro conjunto de dados na tabela " cars.

    INSERT INTO iceberg_data.automobiles.cars VALUES
    ('Tesla Model S', 102, 0, 0, 670, 4766, 3.1, 2023, 'USA'),
    ('Tesla Model 3', 134, 0, 0, 283, 3582, 5.8, 2023, 'USA');
    
  4. Execute a consulta. Os dados são adicionados e o registro total é " 408.

  5. Use a seguinte consulta SQL para inserir o segundo conjunto de dados na tabela " cars.

    INSERT INTO iceberg_data.automobiles.cars VALUES
    ('Kia Optima', 27, 4, 2457, 185, 3200, 8.5, 2023, 'South Korea');
    
  6. Execute a consulta. Os dados são adicionados e o registro total se torna ' 409.

  7. Vá para o Gerenciador de dados.

  8. Selecione a tabela cars. Na seção de carros, selecione a guia Viagem no tempo. É possível visualizar os registros de snapshot (com SnapshotID) correspondentes às transações de dados.

Recuperação de registros de tabela usando snapshots de tabela.

Esta seção do tutorial o orienta no procedimento de recuperação de registros de tabela usando instantâneos de tabela. Você executa consultas para recuperar dados para fins de auditoria e regulamentação.

  1. Vá para o espaço de trabalho Query.

  2. Execute a seguinte consulta para recuperar os registros de snapshot correspondentes às três transações de inserção realizadas.

    SELECT * FROM iceberg_data.automobiles."cars$snapshots" ORDER BY committed_at;
    

    O conjunto de resultados inclui três registros de snapshot com snapshot_id, data, hora e fuso horário. Neste tutorial, o SnapshotID, a data e a hora de cada transação são referidos como: <Tran1Time>, ' <Tran1SnapshotID>, ' <Tran2Time>, ' <Tran2SnapshotID>, ' <Tran3Time>, e ' <Tran3SnapshotID>.

    Também é possível visualizar os registros de instantâneos em Gerenciador de dados > tabela " cars > guia Viagem no tempo.

  3. Forneça o ID ou a hora do snapshot nas consultas a seguir e execute-as para recuperar as informações da tabela naquele momento.

Cenários de Amostra
Cenário Consultar Resultado
Recupere dados do estado inicial usando o ID do instantâneo. SELECT * FROM iceberg_data.automobiles.cars FOR VERSION AS OF <Tran1SnapshotID> ORDER BY Snapshot ID; A seção de resultados exibe 406 registros.
Recupere dados do estado inicial usando o registro de data e hora. SELECT * FROM iceberg_data.automobiles.cars FOR TIMESTAMP AS OF CAST('<Tran1Time>' AS TIMESTAMP WITH TIME ZONE) ORDER BY Snapshot ID; A seção de resultados exibe 406 registros.
Recupere dados após a segunda transação usando o ID do instantâneo. SELECT * FROM iceberg_data.automobiles.cars FOR VERSION AS OF <Tran2SnapshotID> ORDER BY Snapshot ID; A seção de resultados exibe 408 registros.
Recupere dados após a terceira transação usando o registro de data e hora. SELECT * FROM iceberg_data.automobiles.cars FOR TIMESTAMP AS OF CAST('<Tran3Time>' AS TIMESTAMP WITH TIME ZONE) ORDER BY Snapshot ID; A seção de resultados exibe 409 registros.
Recupere dados de um ponto no tempo entre a segunda e a terceira transações. SELECT * FROM iceberg_data.automobiles.cars FOR TIMESTAMP AS OF CAST('Choose-a-time-between-<Tran2Time>-and-<Tran3Time>' AS TIMESTAMP WITH TIME ZONE) ORDER BY Snapshot ID; A seção de resultados exibe 408 registros.
Recuperar dados de um momento anterior à criação da tabela (espera-se que falhe). SELECT * FROM iceberg_data.automobiles.cars FOR TIMESTAMP AS OF CAST('2024-01-01 00:00:00.000 UTC' AS TIMESTAMP WITH TIME ZONE) ORDER BY Snapshot ID; Nenhum registro foi encontrado.

Execução da reversão da tabela

watsonx.data permite que você reverta uma tabela para um ponto anterior no tempo usando instantâneos.

Para reverter os dados da tabela para um snapshot anterior, faça o seguinte:

  1. Vá para o Gerenciador de dados.

  2. Selecione a tabela cars. Na seção de carros, selecione a guia Viagem no tempo. É possível visualizar os registros de instantâneos (com SnapshotID).

  3. Clique no menu de estouro no final da linha do segundo snapshot (o segundo snapshot inclui 408 registros) e clique em Rollback to snapshot. A janela Confirmar reversão para instantâneo é aberta. Clique em Rollback to snapshot. A reversão de dados foi bem-sucedida. Agora, a tabela deve ter 408 registros.

  4. Para verificar a reversão, execute a seguinte consulta para verificar se as linhas correspondentes à terceira transação foram removidas.

    • Exemplo de consulta para verificar se a tabela não inclui o registro "Kia Optima".
    SELECT * FROM iceberg_data.automobiles.cars WHERE car IN ('Kia Optima', 'Tesla Model S', 'Tesla Model 3');
    

    O resultado lista os registros de dados correspondentes apenas a "Tesla Model S" e "Tesla Model 3". A tabela não tem o registro correspondente a "Kia Optima" (terceira transação), pois a tabela agora é revertida para o segundo snapshot.

    • Consulta de amostra para contar o número total de linhas na tabela.
    SELECT COUNT(*) FROM iceberg_data.automobiles.cars;
    

    Você deve ver uma contagem de 408 linhas, que corresponde à contagem quando você executou a segunda transação na tabela. A tabela volta ao seu estado anterior (segunda transação).