来自 StoredProcedure 的 Azure 数据工厂数据集
Azure Data factory Dataset From a StoredProcedure
我的目标是通过存储过程将数据从一个 SQl 天蓝色数据库(用户数据库)传递到另一个 SQl 天蓝色数据库(数据仓库)。
我创建了两个链接服务,每个数据库一个。还有两个我怀疑的数据集。
有问题的存储过程从 table 中收集数据并与其他 table 和 returns 进行多次连接,结果应存储在 table 中数据仓库
SP是这样的:
ALTER PROCEDURE [DataWarehouse].[Item_init]
AS
BEGIN
SET NOCOUNT ON
SELECT Id, a.Name, Code, f.Name, s.Name, g.Name
FROM Item.Item a
join Item.Groupg on g.idGroup= a.idGroup
join Item.Subfam s on s.idSubfam = g.idSubfam
join Item.Fam f on f.idFam= s.idFam
END
从UserDB收集数据的dataset(我觉得不对)是这样的:
{
"name": "ds_SProcItem_init",
"properties": {
"published": false,
"type": "AzureSqlTable",
"linkedServiceName": "UserTable",
"typeProperties": {
"tableName": "Item.Item"
},
"availability": {
"frequency": "Hour",
"interval": 1
}
}
}
另一个数据集:
{
"name": "ds_DWItemOutput",
"properties": {
"published": false,
"type": "AzureSqlTable",
"linkedServiceName": "DataWareHouse",
"typeProperties": {
"tableName": "Item"
},
"availability": {
"frequency": "Hour",
"interval": 1
}
}
}
传送数据集的管道如下:
{
"name": "SprocItem_InitPipeline",
"properties": {
"activities": [
{
"type": "SqlServerStoredProcedure",
"typeProperties": {
"storedProcedureName": "DataWarehouse.Item_init"
},
"inputs": [
{
"name": "ds_SProcItem_init"
}
],
"outputs": [
{
"name": "ds_DWItemOutput"
}
],
"scheduler": {
"frequency": "Hour",
"interval": 1
},
"name": "SprocItem_Init"
}
],
"start": "2016-08-02T00:00:00Z",
"end": "2016-08-02T05:00:00Z",
"isPaused": false,
"hubName": "pruebasaas_hub",
"pipelineMode": "Scheduled"
}
}
请知道这个问题的人能帮帮我吗?
谢谢!
鉴于 Azure SQL 数据库的限制,我建议您需要在此处使用副本 activity 以及存储过程。您需要在 ADF 想要如何工作的范围内处理这个问题。请记住这不是 SSIS :-)
如果我正在构建数据工厂,这些是我会采取的步骤...
- 为了完整性,定义存储过程使用的每个 table 的数据集。
- 第一条管道。有一个 activity 调用存储过程,该存储过程执行输入数据集的连接并输出到新的分段 table(执行 SQL INSERT INTO ... SELECT。 .. 此处)在第一个 Azure SQL 数据库实例上。
- 在 ADF 中为暂存 table 定义输出数据集(proc 结果)。
- 第二条管道。从第 3 点的输出阶段 table 中复制 activity 作为输入。然后输出到第二个 Azure SQL 数据库实例上的 table。
- 再次为了完整起见,最终目的地的 ADF 数据集 table。
副本 activity 弥合了跨数据库查询不可能和 SQL 服务器链接服务器不存在的差距。
图片帮助...
(画技不好请见谅)
有道理吗? :-)
好,加油。
我的目标是通过存储过程将数据从一个 SQl 天蓝色数据库(用户数据库)传递到另一个 SQl 天蓝色数据库(数据仓库)。
我创建了两个链接服务,每个数据库一个。还有两个我怀疑的数据集。
有问题的存储过程从 table 中收集数据并与其他 table 和 returns 进行多次连接,结果应存储在 table 中数据仓库
SP是这样的:
ALTER PROCEDURE [DataWarehouse].[Item_init]
AS
BEGIN
SET NOCOUNT ON
SELECT Id, a.Name, Code, f.Name, s.Name, g.Name
FROM Item.Item a
join Item.Groupg on g.idGroup= a.idGroup
join Item.Subfam s on s.idSubfam = g.idSubfam
join Item.Fam f on f.idFam= s.idFam
END
从UserDB收集数据的dataset(我觉得不对)是这样的:
{
"name": "ds_SProcItem_init",
"properties": {
"published": false,
"type": "AzureSqlTable",
"linkedServiceName": "UserTable",
"typeProperties": {
"tableName": "Item.Item"
},
"availability": {
"frequency": "Hour",
"interval": 1
}
}
}
另一个数据集:
{
"name": "ds_DWItemOutput",
"properties": {
"published": false,
"type": "AzureSqlTable",
"linkedServiceName": "DataWareHouse",
"typeProperties": {
"tableName": "Item"
},
"availability": {
"frequency": "Hour",
"interval": 1
}
}
}
传送数据集的管道如下:
{
"name": "SprocItem_InitPipeline",
"properties": {
"activities": [
{
"type": "SqlServerStoredProcedure",
"typeProperties": {
"storedProcedureName": "DataWarehouse.Item_init"
},
"inputs": [
{
"name": "ds_SProcItem_init"
}
],
"outputs": [
{
"name": "ds_DWItemOutput"
}
],
"scheduler": {
"frequency": "Hour",
"interval": 1
},
"name": "SprocItem_Init"
}
],
"start": "2016-08-02T00:00:00Z",
"end": "2016-08-02T05:00:00Z",
"isPaused": false,
"hubName": "pruebasaas_hub",
"pipelineMode": "Scheduled"
}
}
请知道这个问题的人能帮帮我吗? 谢谢!
鉴于 Azure SQL 数据库的限制,我建议您需要在此处使用副本 activity 以及存储过程。您需要在 ADF 想要如何工作的范围内处理这个问题。请记住这不是 SSIS :-)
如果我正在构建数据工厂,这些是我会采取的步骤...
- 为了完整性,定义存储过程使用的每个 table 的数据集。
- 第一条管道。有一个 activity 调用存储过程,该存储过程执行输入数据集的连接并输出到新的分段 table(执行 SQL INSERT INTO ... SELECT。 .. 此处)在第一个 Azure SQL 数据库实例上。
- 在 ADF 中为暂存 table 定义输出数据集(proc 结果)。
- 第二条管道。从第 3 点的输出阶段 table 中复制 activity 作为输入。然后输出到第二个 Azure SQL 数据库实例上的 table。
- 再次为了完整起见,最终目的地的 ADF 数据集 table。
副本 activity 弥合了跨数据库查询不可能和 SQL 服务器链接服务器不存在的差距。
图片帮助...
(画技不好请见谅)
有道理吗? :-) 好,加油。