Azure data factory 如何在ADF中将存储过程用作输入数据集(如何分配它使用的数据库)

Azure data factory 如何在ADF中将存储过程用作输入数据集(如何分配它使用的数据库),azure-data-factory,Azure Data Factory,我想对linkedservice(azure sql数据库)运行一个存储过程,并将该存储过程的结果输出到数据集(azure sql数据库) 这可能吗 我目前的结论是: 管道:它应该使用在定义为linkedservice的数据库上找到的存储过程,并将其复制到输出数据集(azure sql数据库) 我的存储过程如下所示: SELECT @clientid as Client_Id, [DimDateId] as DimDate_Id, count(1

我想对linkedservice(azure sql数据库)运行一个存储过程,并将该存储过程的结果输出到数据集(azure sql数据库)

这可能吗

我目前的结论是:

管道:它应该使用在定义为linkedservice的数据库上找到的存储过程,并将其复制到输出数据集(azure sql数据库)

我的存储过程如下所示:

SELECT 
        @clientid as Client_Id,
        [DimDateId] as DimDate_Id,
        count(1) as TotalContentViews
    FROM 
        [Analytics].[FactPageViews] as pageviews  
    inner join Analytics.DimPages as pages
        on pageviews.dimpageid = pages.id
    where 
        DimDateId between @startdateid and @enddateid
    group by 
        dimdateid
    order by 
        dimdateid
编辑(至少有工作要做)

我目前正在通过定义查询并在那里运行命令来管理它:

"activities": [
  {
    "type": "Copy",
    "typeProperties": {
      "source": {
        "type": "SqlSource",
        "sqlReaderQuery": "$$Text.Format('EXEC [dbo].[GetViewsByDateRange] 2, 20170421, 20170514', WindowStart, WindowEnd)"
      },
      "sink": {
        "type": "SqlSink",
        "writeBatchSize": 0,
        "writeBatchTimeout": "00:00:00"
      },
      "translator": {
        "type": "TabularTranslator",
        "columnMappings": "Client_Id:Client_Id,DimDate_Id:DimDate_Id,TotalContentViews:TotalContentViews"
      }
    },
    "inputs": [
      {
        "name": "InputDataset-0af"
      }
    ],
    "outputs": [
      {
        "name": "OutputDataset-0af"
      }
    ],

我想你一切都对了。回答你的问题。简单地说,您不需要在管道/活动中定义输入数据集。所以,是的,当然有可能

只需将输出数据集定义为存储过程的结果


希望这能有所帮助

我想你一切都好了。回答你的问题。简单地说,您不需要在管道/活动中定义输入数据集。所以,是的,当然有可能

只需将输出数据集定义为存储过程的结果


希望这能帮上忙我不确定这能帮你解决问题, 按如下所示更改输入和输出数据集

输入数据集

{
"$schema": "http://datafactories.schema.management.azure.com/schemas/2015-09-01/Microsoft.DataFactory.Table.json",

    "name": "ofcspdataset",

    "properties": {

    "type": "AzureSqlTable",

    "linkedServiceName": "sproctestout",

    "typeProperties": {

      "tableName": "dbo.emp" ==> >>need to refer any table be in the source database.

    },

    "external": true,

    "availability": {
      "frequency": "Day",
      "interval": 1
    }
  }
}
输出数据集:

{
  "$schema": "http://datafactories.schema.management.azure.com/schemas/2015-09-01/Microsoft.DataFactory.Table.json",

  "name": "OfficeTestOuputTable",

  "properties": {

    "published": false,

    "type": "AzureSqlTable",

    "linkedServiceName": "sproctestout",

    "structure": [

      { "name": "Id" },

      { "name": "GroupId" }
    ],

    "typeProperties": {

      "tableName": "dbo.testAdf_temp"

    },

    "availability": {
      "frequency": "Day",
      "interval": 1
    }
  }
}
我相信你的管道是好的。只需尝试更改输入和输出数据集


对我来说,它很有效。

我不确定这是否能帮助你解决问题, 按如下所示更改输入和输出数据集

输入数据集

{
"$schema": "http://datafactories.schema.management.azure.com/schemas/2015-09-01/Microsoft.DataFactory.Table.json",

    "name": "ofcspdataset",

    "properties": {

    "type": "AzureSqlTable",

    "linkedServiceName": "sproctestout",

    "typeProperties": {

      "tableName": "dbo.emp" ==> >>need to refer any table be in the source database.

    },

    "external": true,

    "availability": {
      "frequency": "Day",
      "interval": 1
    }
  }
}
输出数据集:

{
  "$schema": "http://datafactories.schema.management.azure.com/schemas/2015-09-01/Microsoft.DataFactory.Table.json",

  "name": "OfficeTestOuputTable",

  "properties": {

    "published": false,

    "type": "AzureSqlTable",

    "linkedServiceName": "sproctestout",

    "structure": [

      { "name": "Id" },

      { "name": "GroupId" }
    ],

    "typeProperties": {

      "tableName": "dbo.testAdf_temp"

    },

    "availability": {
      "frequency": "Day",
      "interval": 1
    }
  }
}
我相信你的管道是好的。只需尝试更改输入和输出数据集


对我来说,它可以工作。

如果没有定义输入,它如何知道运行存储过程所针对的数据库?谢谢你的帮助,顺便说一句。如果没有定义输入,它如何知道它运行存储过程所针对的是哪个数据库?顺便说一句,谢谢你的帮助。我的存储过程连接了许多表。如果过程需要许多表,为什么需要添加“tableName”呢?我的存储过程连接了许多表。如果过程需要许多表,为什么我需要添加“tableName”?