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 |
---|---|---|
|
TIMESTAMP_NTZ |
Carimbo de data/hora de quando a linha foi inserida na tabela de destino, em UTC. |
|
TIMESTAMP_NTZ |
Carimbo de data/hora da última atualização da linha na tabela de destino, em UTC. |
|
BOOLEAN |
O valor é |
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.
|
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>;
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>;
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.