Visualização de dados MySQL no Snowflake

Nota

O Snowflake Connector for MySQL está sujeito aos Termos do conector.

O conector replica dados para o banco de dados de destino, que foi definido durante a configuração do conector e a chamada de PUBLIC.ADD_DATA_SOURCE('<data_source_name>', '<dest_db>').

As tabelas de dados contêm os dados replicados e estão disponíveis no identificador dest_db.schema_name.table_name onde:

  • dest_db é o nome do banco de dados de destino.

  • schema_name é o nome do esquema no qual a tabela MySQL original reside.

  • table_name é o nome da tabela MySQL original.

Nota

dest_db, schema_name e table_name precisam estar entre aspas duplas caso seus nomes sejam compostos por letras maiúsculas e minúsculas.

As tabelas replicadas contêm as colunas de metadados adicionais:

Nome da coluna

Tipo de dados

Descrição

_SNOWFLAKE_INSERTED_AT

TIMESTAMP_NTZ

Carimbo de data/hora de quando a linha foi inserida na tabela de destino, em UTC.

_SNOWFLAKE_UPDATED_AT

TIMESTAMP_NTZ

Carimbo de data/hora da última atualização da linha na tabela de destino, em UTC.

_SNOWFLAKE_DELETED

BOOLEAN

O valor é true se a linha foi excluída da tabela de origem.

Os tipos de dados replicados são mapeados para corresponder aos tipos Snowflake. Para obter mais informações, consulte MySQL para mapeamento de tipo de dados Snowflake.

Controle de acesso a dados replicados

Para controlar o acesso aos dados replicados, use a função de aplicativo DATA_READER. Mais sobre funções de aplicativo do conector: Funções de aplicativo no Snowflake Connector for MySQL Para um controle mais granular sobre objetos de destino específicos, use a função ACCOUNTADMIN para conceder privilégios adequados ou criar funções de banco de dados.

MySQL para mapeamento de tipo de dados Snowflake

No Snowflake, os nomes das colunas das tabelas replicadas são escritos em maiúsculas e os tipos são mapeados para corresponder aos tipos do Snowflake.

A tabela a seguir mostra como os tipos de dados do conector são mapeados para os tipos do Snowflake.

Tipo de MySQL

Tipo Snowflake

Notas

DECIMAL / NUMERIC

NUMBER

O número máximo de dígitos no formato DECIMAL para MySQL é 65. Para Snowflake, o máximo é 38.

Compatível até o máximo de dígitos permitidos no Snowflake. Quando excedido, a precisão é perdida. Para obter mais informações, consulte Tipos de dados numéricos.

INT / INTEGER

INT

TINYINT / BOOL

INT

SMALLINT

INT

MEDIUMINT

INT

BIGINT

INT

YEAR

INT

FLOAT

FLOAT

DOUBLE

FLOAT

VARCHAR

VARCHAR

TINYTEXT

VARCHAR

TEXT

VARCHAR

ENUM

VARCHAR

Armazenado como uma cadeia de caracteres. Por exemplo, para ENUM (“um”, “dois”) os valores possíveis são: “um”, “dois”.

SET

VARCHAR

Armazenado como uma cadeia de caracteres unida por vírgulas na ordem de declaração de coluna. Por exemplo, para SET(“one”, “two”) os valores possíveis são: “ “, “one”, “two”, “one,two”.

MEDIUMTEXT

VARCHAR

Compatível até o tamanho máximo de entrada no Snowflake (16MB).

LONGTEXT

VARCHAR

Compatível até o tamanho máximo de entrada no Snowflake (16MB).

CHAR

VARCHAR

Enviado para o Snowflake sem os espaços finais.

BIT

VARCHAR

Representado em hexadecimal, por exemplo: “83060c183060c183”.

DATE

DATE

Armazenado em tabelas de destino como cadeias de caracteres, por exemplo “1971-01-31”. Em exibições niveladas, a data é convertida para DATE.

DATETIME

DATETIME / TIMESTAMP_NTZ

TIMESTAMP

TIMESTAMP_TZ

Armazenado em tabelas de destino como cadeias de caracteres em UTC, por exemplo “2000-12-30 23:59:59.001009+00:00”. Em exibições niveladas, os carimbos de data/hora são convertidos para TIMESTAMP_TZ.

TIME

TIME

Armazenado em tabelas de destino como cadeias de caracteres, por exemplo “23:59:59”. Em exibições niveladas, os valores de tempo são convertidos para TIME.

BINARY

BINARY

MEDIUMBLOB

BINARY

Compatível até com o tamanho máximo de entrada no Snowflake, que é 16MB.

LONGBLOB

BINARY

Compatível até com o tamanho máximo de entrada no Snowflake, que é 16MB.

BLOB

BINARY

VARBINARY

BINARY

TINYBLOB

BINARY

JSON

VARIANT

JSON pode ser armazenado em MySQL BinLog como um documento completo ou uma atualização parcial. Por padrão, ele é armazenado como um documento completo. Atualizações parciais não são compatíveis no momento.

JSONs são enviados ao Snowflake como cadeias de caracteres, mas o Snowpipe Streaming os converte em um tipo de dados VARIANT e os armazena internamente como ARRAY, OBJECT etc.

Compatível até com o tamanho máximo de entrada no Snowflake, que é 16MB.

Visualização dos dados de colunas excluídas

Se uma coluna for excluída na tabela de origem, ela não será excluída na tabela de destino. Em vez disso, uma abordagem de exclusão suave é adotada, e a coluna será renomeada para o <nome anterior>__SNOWFLAKE_DELETED para que os valores históricos ainda possam ser consultados.

Por exemplo, se uma coluna A for excluída, ela será renomeada para A__SNOWFLAKE_DELETED na tabela de destino e poderá ser consultada como:

SELECT A__SNOWFLAKE_DELETED FROM <TABLE_NAME>;
Copy

Visualização dos dados de colunas renomeadas

Renomear uma coluna é o mesmo que excluir a coluna e criar uma nova com o novo nome. A exclusão segue a abordagem de exclusão suave explicada na seção anterior.

Por exemplo, se a coluna A foi renomeada para B – na tabela de destino A foi renomeada para A__SNOWFLAKE_DELETED e uma nova coluna B foi adicionada. Todas as linhas existentes antes da alteração mantêm os valores da coluna na coluna A__SNOWFLAKE_DELETED, enquanto as novas linhas adicionadas após a alteração mantêm os valores na coluna B. Os valores da coluna renomeada podem ser visualizados como uma única coluna com uma consulta simples:

SELECT
     CASE WHEN B IS NULL THEN A__SNOWFLAKE_DELETED ELSE B END AS A_RENAMED_TO_B
FROM <TABLE_WITH_RENAMED_COLUMN>;
Copy

Uma exibição pode ser criada para simplificar o uso depois que uma coluna for renomeada.

Próximos passos

Após concluir esses procedimentos, revise os processos em Tarefas Snowflake Connector for MySQL em andamento.