全部產品
Search
文件中心

DataWorks:Snowflake資料來源

更新時間:Dec 09, 2025

DataWorksData Integration支援讀寫Snowflake。本文為您介紹DataWorks的Snowflake資料同步能力支援情況。

使用限制

Snowflake Reader、Writer使用的驅動版本是snowflake-jdbc:3.20.0,驅動能力詳情請參見SnowFlake JDBC驅動程式發布說明

支援的欄位類型

Snowflake Reader和Snowflake Writer支援大部分通用的關聯式資料庫資料類型,例如數字、字元等。但也存在部分類型未被支援的情況,請注意檢查您的資料類型,根據具體的資料庫進行選擇。

欄位類型

離線讀(Snowflake Reader)

離線寫(Snowflake Writer)

NUMBER

支援

支援

DECIMAL

支援

支援

NUMERIC

支援

支援

INT

支援

支援

INTEGER

支援

支援

BIGINT

支援

支援

SMALLINT

支援

支援

TINYINT

支援

支援

BYTEINT

支援

支援

FLOAT

支援

支援

FLOAT4

支援

支援

FLOAT8

支援

支援

DOUBLE

支援

支援

DOUBLE PRECISION

支援

支援

CHAR

支援

支援

VARCHAR

支援

支援

STRING

支援

支援

TEXT

支援

支援

BINARY

支援

支援

VARBINARY

支援

支援

BOOLEAN

支援

支援

DATE

支援

支援

TIME

支援

支援

TIMESTAMP

支援

支援

TIMESTAMP_NTZ

支援

支援

TIMESTAMP_LTZ

支援

支援

TIMESTAMP_TZ

不支援

支援

OBJECT

不支援

不支援

ARRAY

不支援

不支援

VARIANT

不支援

不支援

GEOGRAPHY

不支援

不支援

GEOMETRY

不支援

不支援

VECTOR

不支援

不支援

FILE

不支援

不支援

建立資料來源

在進行資料同步任務開發時,您需要在DataWorks上建立一個對應的資料來源,操作流程請參見資料來源管理詳細的配置參數解釋可在配置介面查看對應參數的文案提示

資料同步任務開發

資料同步任務的配置入口和通用配置流程可參見下文的配置指導。

單表離線同步任務配置指導

附錄:指令碼Demo與參數說明

離線任務指令碼配置方式

如果使用指令碼模式配置單表離線任務,您需要按照統一的指令碼格式要求,在任務指令碼中編寫相應的參數,詳情請參見指令碼模式配置。以下為您介紹指令碼模式下資料來源的參數配置詳情。

Reader指令碼Demo

{
    "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"
            }
        ]
    }
}

Reader指令碼參數

參數

描述

是否必選

預設值

datasource

輸入Snowflake資料來源名稱。

table

選取的需要同步的表名稱。

schema

要讀取的Snowflake表所在的Schema。

column

所配置的表中需要同步的列名集合,使用JSON的數組描述欄位資訊,預設使用所有列配置,例如[ * ]:

  • 支援列裁剪,即可以挑選部分列進行匯出。

  • 支援列換序,即列可以不按照表schema資訊順序進行匯出。

  • 支援常量配置,您需要按照JSON格式["id","1", "'bazhen.csy'", "null", "to_char(a + 1)", "2.3" , "true"]

    • id為普通列名。

    • 1為整型數字常量。

    • 'bazhen.csy'為字串常量。

    • null為空白指標。

    • to_char(a + 1)為函數運算式。

    • 2.3為浮點數。

    • true為布爾值。

  • column必須顯示您指定同步的列集合,不允許為空白。

splitFactor

切分因子,可以配置同步資料的切分份數。如果配置了多並發,會按照並發數 * splitFactor份來切分。例如,並發數=5,splitFactor=5,則會按照5*5=25份來切分,在5個並發線程上執行。

說明

建議取值範圍:1~100,過大會導致記憶體溢出。

splitPk

Snowflake Reader進行資料幫浦時,如果指定splitPk,表示您希望使用splitPk代表的欄位進行資料分區。資料同步系統因此會啟動並發任務進行資料同步,這樣可以提高資料同步的效率。

  • 推薦使用表主鍵設定splitPk,因為表主鍵通常情況下比較均勻,因此切分出來的分區也不容易出現資料熱點。

  • 目前splitPk僅支援整型資料切分,不支援字串、浮點、日期等其他類型 。如果您指定其他非支援類型,SnowFlake Reader將報錯。

where

篩選條件,SnowFlake Reader根據指定的columntablewhere條件拼接SQL,並根據該SQL進行資料幫浦。例如在做測試時,可以將where條件指定為limit 10。

在實際業務情境中,通常會選擇當天的資料進行同步,可以將where條件指定為gmt_create>${bizdate}

  • where條件可以有效地進行業務增量同步處理。

  • where條件不配置或為空白時,則視作全表同步資料。

fetchSize

該配置項定義了外掛程式和資料庫伺服器端每次批量資料擷取條數,該值決定了Data Integration和伺服器端的網路互動次數,能夠提升資料幫浦效能。

說明

fetchSize值過大(大於2048)可能造成資料同步進程OOM。

1024

Writer指令碼Demo

{
    "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": []
    }
}

Writer指令碼參數

參數

描述

是否必選

預設值

datasource

輸入Snowflake資料來源名稱。

table

選取的需要同步的表名稱。

schema

要寫入的Snowflake表所在的Schema。

column

目標表需要寫入資料的欄位,欄位之間用英文逗號分隔。例如"column":["id","name","age"]。如果要依次寫入全部列,使用*表示,例如"column":["*"]

batchSize

一次性批量提交的記錄數大小,該值可以極大減少Data Integration與Snowflake的網路互動次數,並提升整體輸送量。但是該值設定過大可能會造成Data Integration運行進程OOM情況。

1024