A integração de dados do DataWorks permite ler e gravar dados no Snowflake. Este tópico descreve os tipos de campo compatíveis, como criar uma fonte de dados Snowflake e os parâmetros de script do Snowflake Reader e do Snowflake Writer.
Limitações
O Snowflake Reader e o Snowflake Writer usam o driver snowflake-jdbc:3.20.0. Para obter detalhes sobre as capacidades do driver e problemas conhecidos, consulte as Notas de versão do driver JDBC do Snowflake.
Tipos de campo compatíveis
O Snowflake Reader e o Snowflake Writer são compatíveis com a maioria dos tipos de campo comuns em bancos de dados relacionais, incluindo tipos numéricos e de caracteres. A tabela a seguir lista os tipos compatíveis e não compatíveis.
|
Tipo de campo |
Leitura offline (Snowflake Reader) |
Gravação offline (Snowflake Writer) |
|
NUMBER |
Compatível |
Compatível |
|
DECIMAL |
Compatível |
Compatível |
|
NUMERIC |
Compatível |
Compatível |
|
INT |
Compatível |
Compatível |
|
INTEGER |
Compatível |
Compatível |
|
BIGINT |
Compatível |
Compatível |
|
SMALLINT |
Compatível |
Compatível |
|
TINYINT |
Compatível |
Compatível |
|
BYTEINT |
Compatível |
Compatível |
|
FLOAT |
Compatível |
Compatível |
|
FLOAT4 |
Compatível |
Compatível |
|
FLOAT8 |
Compatível |
Compatível |
|
DOUBLE |
Compatível |
Compatível |
|
DOUBLE PRECISION |
Compatível |
Compatível |
|
CHAR |
Compatível |
Compatível |
|
VARCHAR |
Compatível |
Compatível |
|
STRING |
Compatível |
Compatível |
|
TEXT |
Compatível |
Compatível |
|
BINARY |
Compatível |
Compatível |
|
VARBINARY |
Compatível |
Compatível |
|
BOOLEAN |
Compatível |
Compatível |
|
DATE |
Compatível |
Compatível |
|
TIME |
Compatível |
Compatível |
|
TIMESTAMP |
Compatível |
Compatível |
|
TIMESTAMP_NTZ |
Compatível |
Compatível |
|
TIMESTAMP_LTZ |
Compatível |
Compatível |
|
TIMESTAMP_TZ |
Não compatível |
Compatível |
|
OBJECT |
Não compatível |
Não compatível |
|
ARRAY |
Não compatível |
Não compatível |
|
VARIANT |
Não compatível |
Não compatível |
|
GEOGRAPHY |
Não compatível |
Não compatível |
|
GEOMETRY |
Não compatível |
Não compatível |
|
VECTOR |
Não compatível |
Não compatível |
|
FILE |
Não compatível |
Não compatível |
Crie uma fonte de dados
Antes de desenvolver uma tarefa de sincronização de dados, crie uma fonte de dados Snowflake no DataWorks. Para o procedimento completo, consulte Gerenciamento de fontes de dados. Para obter descrições de cada parâmetro de configuração, consulte as dicas de ferramenta na página de configuração.
Desenvolver uma tarefa de sincronização de dados
Configure uma tarefa de sincronização offline para uma única tabela
Para o procedimento passo a passo, consulte Configure uma tarefa de sincronização na interface sem código e Configure uma tarefa de sincronização no editor de código.
Para parâmetros de script e exemplos, consulte a seção Apêndice: Exemplos de scripts e descrições de parâmetros.
Solução de problemas
Erros de falta de memória (OOM)
Sintoma: A tarefa de sincronização falha com um erro de falta de memória (OOM).
Causas e correções:
O valor de
fetchSizeexcede 2048. Reduza ofetchSizepara 1024 (padrão) ou menos.O
batchSizeestá definido com um valor muito alto para a memória disponível. Reduza obatchSizepara 1024 (padrão) ou menos.O
splitFactorestá configurado com um valor excessivo. Mantenha osplitFactorna faixa de 1 a 100. Valores altos geram muitos fragmentos de dados e aumentam a pressão sobre a memória.
splitPk não tem efeito
Sintoma: Os dados não são divididos entre threads simultâneas, mesmo após definir o splitPk.
Causa: O splitPk aceita apenas colunas inteiras. Se você especificar uma coluna de string, ponto flutuante ou data, o Snowflake Reader reportará um erro.
Correção: Defina o splitPk como uma coluna de chave primária inteira. Caso não haja nenhuma coluna inteira disponível, aumente o valor de concurrent para melhorar o throughput.
Apêndice: Exemplos de scripts e descrições de parâmetros
Configure um script de tarefa offline
Use o editor de código para escrever o script da tarefa de sincronização no formato exigido. Para os requisitos gerais de formato, consulte Configure uma tarefa de sincronização no editor de código. As seções a seguir fornecem exemplos de scripts e descrições de parâmetros para o Snowflake Reader e o Snowflake Writer.
Exemplo de script do Reader
{
"transform": false,
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "snowflake",
"parameter": {
"schema": "PUBLIC",
"envType": 0,
"datasource": "snowflake_datasource",
"column": [
"ID",
"NAME"
],
"where": "",
"table": "table"
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "stream",
"parameter": {
"print": true
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle": false,
"concurrent": 2
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Parâmetros do script do Reader
|
Parâmetro |
Descrição |
Obrigatório |
Padrão |
|
|
Nome da fonte de dados Snowflake. |
Sim |
Nenhum |
|
|
Nome da tabela de origem para leitura. |
Sim |
Nenhum |
|
|
Schema onde a tabela de origem está localizada. |
Sim |
Nenhum |
|
|
Colunas a serem sincronizadas, especificadas como um array JSON. Use |
Sim |
Nenhum |
|
|
Coluna de chave primária inteira usada para dividir os dados em fragmentos para extração simultânea. Defina este valor como uma chave primária com valores distribuídos uniformemente para evitar distorção de dados. Apenas colunas inteiras são compatíveis — especificar uma coluna de string, ponto flutuante ou data fará com que o Snowflake Reader reporte um erro. |
Não |
Nenhum |
|
|
Número de fragmentos por thread simultânea. Total de fragmentos = |
Não |
Nenhum |
|
|
Condição de filtro SQL anexada à consulta de extração. Por exemplo, defina |
Não |
Nenhum |
|
|
Quantidade de linhas recuperadas por lote do Snowflake. Um valor maior reduz as idas e vindas e melhora o throughput, mas valores acima de 2048 podem causar um erro OOM. Para tabelas grandes, comece com o padrão e aumente apenas se necessário. |
Não |
1024 |
Exemplo de script do Writer
{
"transform": false,
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "snowflake",
"parameter": {
"schema": "PUBLIC",
"envType": 0,
"datasource": "snowflake_datasource",
"column": [
"ID",
"NAME"
],
"table": "TABLE"
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"executeMode": null,
"errorLimit": {
"record": "0"
},
"speed": {
"concurrent": 2,
"throttle": false
}
},
"order": {
"hops": []
}
}
Parâmetros do script do Writer
|
Parâmetro |
Descrição |
Obrigatório |
Padrão |
|
|
Nome da fonte de dados Snowflake. |
Sim |
Nenhum |
|
|
Nome da tabela de destino. |
Sim |
Nenhum |
|
|
Schema onde a tabela de destino está localizada. |
Sim |
Nenhum |
|
|
Colunas de destino para gravação, especificadas como um array JSON. Por exemplo: |
Sim |
Nenhum |
|
|
Quantidade de linhas gravadas por lote. Um valor maior reduz as idas e vindas e melhora o throughput, mas valores excessivos podem causar um erro OOM no processo de integração de dados. |
Não |
1024 |