Todos os produtos
Search
Central de documentação

DataWorks:Snowflake

Última atualização: Jun 27, 2026

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

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 fetchSize excede 2048. Reduza o fetchSize para 1024 (padrão) ou menos.

  • O batchSize está definido com um valor muito alto para a memória disponível. Reduza o batchSize para 1024 (padrão) ou menos.

  • O splitFactor está configurado com um valor excessivo. Mantenha o splitFactor na 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

datasource

Nome da fonte de dados Snowflake.

Sim

Nenhum

table

Nome da tabela de origem para leitura.

Sim

Nenhum

schema

Schema onde a tabela de origem está localizada.

Sim

Nenhum

column

Colunas a serem sincronizadas, especificadas como um array JSON. Use ["*"] para sincronizar todas as colunas. Para sincronizar um subconjunto, liste os nomes das colunas explicitamente: ["id", "name"]. Também é possível incluir constantes e expressões: ["id", "1", "'bazhen.csy'", "null", "to_char(a + 1)", "2.3", "true"].

Sim

Nenhum

splitPk

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

splitFactor

Número de fragmentos por thread simultânea. Total de fragmentos = concurrent × splitFactor. Por exemplo, com concurrent = 5 e splitFactor = 5, os dados são divididos em 25 fragmentos processados por 5 threads. Mantenha este valor na faixa de 1 a 100; um valor muito grande pode causar um erro OOM.

Não

Nenhum

where

Condição de filtro SQL anexada à consulta de extração. Por exemplo, defina where como limit 10 para testes, ou gmt_create>${bizdate} para sincronização incremental. Se deixado em branco, todas as linhas serão sincronizadas.

Não

Nenhum

fetchSize

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

datasource

Nome da fonte de dados Snowflake.

Sim

Nenhum

table

Nome da tabela de destino.

Sim

Nenhum

schema

Schema onde a tabela de destino está localizada.

Sim

Nenhum

column

Colunas de destino para gravação, especificadas como um array JSON. Por exemplo: ["id", "name", "age"]. Para gravar em todas as colunas em ordem, use ["*"].

Sim

Nenhum

batchSize

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