概要
Azure Data Factory にてストアードプロシージャアクティビティのパラメータを動的に設定する方法を共有します。次のようなオブジェクト型の値をストアド プロシージャのパラメーターに渡すことで、パラメータの数と値を動的に設定できるようです。本記事では検証コードと結果を共有します。
{"Param1":{"value": "a","type": "String"},"Param2": {"value": "b","type": "String"},"Param3": {"value": "c","type": "String"}}
検証コードと結果
1. Azure SQL Database にてストアードプロシージャとテーブルを作成
-- DROP TABLE dbo.tbl010
CREATE TABLE dbo.tbl010
(
ID int IDENTITY (1,1) NOT NULL
,str_col nvarchar(100)
,PRIMARY KEY (ID)
);
-- DROP PROCEDURE dbo.StoredProcedure010;
CREATE PROCEDURE dbo.StoredProcedure010
@Param1 VARCHAR(50),
@Param2 VARCHAR(50)
AS
BEGIN
INSERT INTO dbo.tbl010 (str_col)
SELECT @Param1 + @Param2;
END;
2. Azure Data Factory にてストアードプロシージャをコールするストアードプロシージャアクティビティのパイプラインを作成
パイプライン定義
{
"name": "pipeline",
"properties": {
"activities": [
{
"name": "Stored ",
"type": "SqlServerStoredProcedure",
"dependsOn": [],
"policy": {
"timeout": "0.12:00:00",
"retry": 0,
"retryIntervalInSeconds": 30,
"secureOutput": false,
"secureInput": false
},
"userProperties": [],
"typeProperties": {
"storedProcedureName": {
"value": "@pipeline().parameters.sp_name",
"type": "Expression"procedure1
},
"storedProcedureParameters": {
"value": "@pipeline().parameters.sp_paras",
"type": "Expression"
}
},
"linkedServiceName": {
"referenceName": "sqldb__pj1",
"type": "LinkedServiceReference"
}
}
],
"parameters": {
"sp_name": {
"type": "string",
"defaultValue": "dbo.StoredProcedure010"
},
"sp_paras": {
"type": "object",
"defaultValue": {
"Param1": {
"value": "a",
"type": "String"
},
"Param2": {
"value": "b",
"type": "String"
}
}
}
},
"annotations": []
}
}
3. Azure Data Factory にてパイプラインをデバック実行して、テーブルのデータを確認
SELECT * FROM dbo.tbl010;