全部產品
Search
文件中心

Dataphin:配置指令碼模式輸入組件

更新時間:Nov 19, 2025

指令碼模式組件用於配置系統組件不支援的配置項,以滿足業務情境。

操作步驟

  1. 在Dataphin首頁頂部功能表列,選擇研發 > Data Integration

  2. 在整合頁面頂部功能表列選擇專案(Dev-Prod模式需要選擇環境)。

  3. 在左側導覽列中單擊離線整合,在離線整合列表中單擊需要開發的離線管道,開啟該離線管道的配置頁面。

  4. 單擊頁面右上方的組件庫,開啟組件庫面板。

  5. 組件庫面板左側導覽列中需選擇輸入,在右側的輸入組件列表中找到指令碼模式輸入組件,並拖動該組件至畫布。

  6. 單擊指令碼模式輸入組件卡片中的image表徵圖,開啟指令碼模式輸入配置對話方塊。

  7. 指令碼模式輸入配置對話方塊,配置參數。

    參數

    描述

    步驟名稱

    即指令碼模式輸入組件的名稱。Dataphin自動產生步驟名稱,您也可以根據業務情境修改。命名規則如下:

    • 只能包含中文、字母、底線(_)、數字。

    • 不能超過64個字元。

    資料來源類型

    選擇資料來源類型。

    資料來源

    選擇相應的資料來源執行個體。

    產生同步設定檔

    單擊產生同步設定檔,系統將自動根據所選的資料來源類型,在右側設定檔地區組建組態JSON的模板,您可根據實際業務需求刪減配置項或修改配置項的值。

    設定檔

    您可單擊image表徵圖,擴充編輯地區,全屏查看或編寫設定檔。

    模板配置中主要由三部分組成:

    • tabletables:輸入組件的單輸入表和多輸入表。多輸入表的key值為tables,單輸入表的key值為table。如果組件不涉及表,則沒有該參數。

    • column:輸入表的輸入欄位,欄位至少有nametype

    • parameter:同步配置相關的參數,資料來源不同則配置不同,組件參數請參見對應組件的說明。

    {
      "table":"tableName",// "tables":["tableName"]
      "column":[{
        "name":"",
        "type":""
      }],
      "parameter":{}
    }
  8. 單擊確認,完成指令碼模式輸入組件的屬性配置。

最佳實務

指令碼模式組件採用配置JSON的方式來配置離線整合任務,其主要使用情境包含:

  • 使用無法白屏配置的組件進階配置項。

  • 當中繼資料不支援(例如查表、查欄位時出現錯誤或不可用),需手動設定相關表及欄位。

  • 解決關鍵字問題,例如表名、欄位名等特殊關鍵字。

  • 使用資料庫函數。

  • 分庫分表。

  • 直接使用查詢SQL。

下文將以同步MySQL多表JOIN的結果資料為例進行說明,其他情境均可參照本例進行配置。

一:配置介紹

指令碼模式輸入配置對話方塊中,配置參數。

參數

描述

步驟名稱

輸入指令碼模式輸入組件的名稱。

資料來源類型

選擇MySQL

資料來源

選擇相應資料來源執行個體。

產生同步設定檔

單擊產生同步設定檔,系統將自動根據所選的資料來源類型,在右側設定檔地區組建組態JSON的模板,您可根據實際業務需求刪減配置項或修改配置項的值。

設定檔

模板配置中主要由三部分組成:

  • table:配置輸入表,若為多表,可以僅輸入其中一個表。

  • column:輸入表的輸入欄位,欄位至少有nametype兩個值。部分輸入組件可能還需輸入欄位在欄位列表中的索引位置,即index的值。

  • parameter:同步配置相關的參數,資料來源不同則配置不同,組件參數請參見對應組件的說明。

{
    "table":"tableName", 
    "column":[ 
        {
            "name":"",
            "type":""
        }
    ],
    "parameter":{

    }
}

二:組件使用

不同使用情境,組件的使用樣本如下。

使用查詢SQL

例如,同步一個多表JOIN的結果資料或其他自訂SQL取數,設定檔內容如下。

{
    "table": "sff_id_name",
    "parameter": {
        "connection": [
            {
                "querySql": [
                    "select a.id, b.name from sff_id_name a join sff_id_name_1 b on a.id = b.id"
                ]
            }
        ]
    },
    "column": [
        {
            "name": "id",
            "type": "Long"
        },
        {
            "name": "name",
            "type": "String"
        }
    ]
}

若使用複雜的SQL,則需要使用querySql配置項,該配置項為字串數組,支援多個結構一致的SELECT語句。此外,該配置項必須嵌套在connection中,並且支援多個connection,即多個資料庫連接。

分庫分表

分庫分表是指在表結構一致的前提下,資料分布在多個資料庫和多個表中。

  • 使用querySql

    {
        "table": "sff_id_name",
        "parameter": {
            "connection": [
                {
                    "querySql": [
                        "select a.id, b.name from sff_id_name a join sff_id_name_1 b on a.id = b.id"
                    ]
                },
                {
                    "jdbcUrl": [
                        "jdbc:mysql://ip:3306/dataphin"
                    ],
                    "querySql": [
                        "select id,name from sff_id_name"
                    ]
                }
            ]
        },
        "column": [
            {
                "name": "id",
                "type": "Long"
            },
            {
                "name": "name",
                "type": "String"
            }
        ]
    }
  • 直接配置表名

    {
        "table": "sff_id_name1",
        "parameter": {
            "connection": [
                {
                    "table": [
                        "sff_id_name1","sff_id_name2"
                    ]
                },
                {
                    "jdbcUrl": [
                        "jdbc:mysql://xxx:3306/dataphin1"
                    ],
                    "table": [
                        "sff_id_name3","sff_id_name4"
                    ]
                },
                {
                    "jdbcUrl": [
                        "jdbc:mysql://xxx:3306/dataphin2"
                    ],
                    "table": [
                        "sff_id_name5","sff_id_name6"
                    ]
                }
            ]
        },
        "column": [
            {
                "name": "id",
                "type": "Long"
            },
            {
                "name": "name",
                "type": "String"
            }
        ]
    }

使用函數

直接使用資料庫支援的函數,比如使用MySQL的upper函數。

{
  "tables":[
    "sff_id_name_2"
  ],
  "parameter":{
    "where":"id>0",
    "splitPk":"id"
  },
  "column":[
    {
      "name":"id",
      "type":"Long"
    },
    {
      "name":"upper(name)",
      "type":"String"
    }
  ]
}

關鍵字

根據資料庫對關鍵字的處理,MySQL使用反引號(``)來標識關鍵字。例如,關鍵字為id,則可使用`id`

{
	"tables":[
		"sff_id_name_2"
	],
	"parameter":{
		"where":"id>0",
		"splitPk":"id"
	},
	"column":[
		{
			"name":"`id`",
			"type":"Long"
		},
        {
			"name":"upper(name)",
			"type":"String"
		}
	]
}