Azure data factory 如何在ADF中将存储过程用作输入数据集(如何分配它使用的数据库)
我想对linkedservice(azure sql数据库)运行一个存储过程,并将该存储过程的结果输出到数据集(azure sql数据库) 这可能吗 我目前的结论是: 管道:它应该使用在定义为linkedservice的数据库上找到的存储过程,并将其复制到输出数据集(azure sql数据库) 我的存储过程如下所示: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
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”?