2017-02-08 17 views
2

Я очень новичок в DataFactory и имею проблемы с пониманием того, как правильно создать трубопровод, который будет выполнять сохраненный процесс перед выполнением функции копирования.Активность цепочки Azure DataFactory

Сохраненная процедура - это просто таблица TRUNCATE таблицы назначения, которая используется в качестве выходного набора данных во втором действии.

Из документов DataFactory он сообщает мне, что для выполнения сохраненного процесса сначала укажите «выход» proc как «вход» второго действия.

Однако не существует реального «выхода» из хранимой процедуры. Чтобы заставить его «работать», я клонировал вывод второго действия, изменил его имя и сделал его external=false, чтобы он прошел мимо ошибок инициализации, но это, очевидно, общий клоч.

Для меня не имеет значения, что, по крайней мере, в случае действия TRUNCATE, выполняемого этой хранимой процедурой, почему бы и не нужно было определять результат.

Но, когда я попытался использовать вывод из сохраненного proc в качестве дополнительного ввода, я получил сообщение об ошибке с дублируемым именем таблицы.

Как я могу получить сохраненную транзакционную операцию TRUNCATE для успешного выполнения (и завершения) до запуска операции копирования?

Вот код трубопровода:

{ 
    "name": "Traffic CRM - System User Stage", 
    "properties": { 
     "description": "Move System User to Stage", 
     "activities": [ 
      { 
       "type": "SqlServerStoredProcedure", 
       "typeProperties": { 
        "storedProcedureName": "dbo.usp_Truncate_Traffic_Crm_SystemUser", 
        "storedProcedureParameters": {} 
       }, 
       "outputs": [ 
        { 
         "name": "Smart App - usp Truncate System User" 
        } 
       ], 
       "policy": { 
        "timeout": "01:00:00", 
        "concurrency": 1, 
        "retry": 3 
       }, 
       "scheduler": { 
        "frequency": "Day", 
        "interval": 1 
       }, 
       "name": "Smart App - SystemUser Truncate" 
      }, 
      { 
       "type": "Copy", 
       "typeProperties": { 
        "source": { 
         "type": "SqlSource", 
         "sqlReaderQuery": "select * from [dbo].[Traffic_Crm_SystemUser]" 
        }, 
        "sink": { 
         "type": "SqlSink", 
         "writeBatchSize": 0, 
         "writeBatchTimeout": "00:00:00" 
        }, 
        "translator": { 
         "type": "TabularTranslator", 
         "columnMappings": "All columns mapped here" 
        } 
       }, 
       "inputs": [ 
        { 
         "name": "Traffic CRM - SytemUser Stage" 
        } 
       ], 
       "outputs": [ 
        { 
         "name": "Smart App - System User Stage Production" 
        } 
       ], 
       "policy": { 
        "timeout": "1.00:00:00", 
        "concurrency": 1, 
        "executionPriorityOrder": "NewestFirst", 
        "style": "StartOfInterval", 
        "retry": 3, 
        "longRetry": 0, 
        "longRetryInterval": "00:00:00" 
       }, 
       "scheduler": { 
        "frequency": "Day", 
        "interval": 1 
       }, 
       "name": "Activity-0-[dbo]_[Traffic_Crm_SystemUser]->[dbo]_[Traffic_Crm_SystemUser]" 
      } 
     ], 
     "start": "2017-01-19T14:30:57.309Z", 
     "end": "2099-12-31T05:00:00Z", 
     "isPaused": false, 
     "hubName": "stagingdatafactory1_hub", 
     "pipelineMode": "Scheduled" 
    } 
} 

ответ

2

Вашего SP выход активность набор данные, т.е. «имя»: «Смарт App - УСП Округление пользователя система» должен быть введен для следующей операции. Если у вас есть путаница в том, что положить в наборе данных, просто создать фиктивный набор данных, как показано ниже

{ 
    "name": "DummySPDS", 
    "properties": { 
     "published": false, 
     "type": "SqlServerTable", 
     "linkedServiceName": "SQLServerLS", 
     "typeProperties": { 
      "tableName": "dummyTable" 
     }, 
     "availability": { 
      "frequency": "Hour", 
      "interval": 1 
     }, 
     "IsExternal":"True" 
    } 
} 

Вот полный код Трубопроводный

{ 
    "name": "Traffic CRM - System User Stage", 
    "properties": { 
     "description": "Move System User to Stage", 
     "activities": [ 
      { 
       "type": "SqlServerStoredProcedure", 
       "typeProperties": { 
        "storedProcedureName": "dbo.usp_Truncate_Traffic_Crm_SystemUser", 
        "storedProcedureParameters": {} 
       }, 
       "inputs": [ 
        { 
         "name": "DummySPDS" 
        } 
       ], 
       "outputs": [ 
        { 
         "name": "Smart App - usp Truncate System User" 
        } 
       ], 
       "policy": { 
        "timeout": "01:00:00", 
        "concurrency": 1, 
        "retry": 3 
       }, 
       "scheduler": { 
        "frequency": "Day", 
        "interval": 1 
       }, 
       "name": "Smart App - SystemUser Truncate" 
      }, 
      { 
       "type": "Copy", 
       "typeProperties": { 
        "source": { 
         "type": "SqlSource", 
         "sqlReaderQuery": "select * from [dbo].[Traffic_Crm_SystemUser]" 
        }, 
        "sink": { 
         "type": "SqlSink", 
         "writeBatchSize": 0, 
         "writeBatchTimeout": "00:00:00" 
        }, 
        "translator": { 
         "type": "TabularTranslator", 
         "columnMappings": "All columns mapped here" 
        } 
       }, 
       "inputs": [ 
        { 
         "name": "Smart App - usp Truncate System User" 
        } 
       ], 
       "outputs": [ 
        { 
         "name": "Smart App - System User Stage Production" 
        } 
       ], 
       "policy": { 
        "timeout": "1.00:00:00", 
        "concurrency": 1, 
        "executionPriorityOrder": "NewestFirst", 
        "style": "StartOfInterval", 
        "retry": 3, 
        "longRetry": 0, 
        "longRetryInterval": "00:00:00" 
       }, 
       "scheduler": { 
        "frequency": "Day", 
        "interval": 1 
       }, 
       "name": "Activity-0-[dbo]_[Traffic_Crm_SystemUser]->[dbo]_[Traffic_Crm_SystemUser]" 
      } 
     ], 
     "start": "2017-01-19T14:30:57.309Z", 
     "end": "2099-12-31T05:00:00Z", 
     "isPaused": false, 
     "hubName": "stagingdatafactory1_hub", 
     "pipelineMode": "Scheduled" 
+0

Я добавил фиктивный набор данных, как описано, однако, то вторая деятельность потерял отображение, необходимое для операции копирования. Затем я попытался добавить второй элемент к «входам», но получил ошибку «имя дублирующего ключевого объекта», хотя мой фиктивный набор данных не содержит одно и то же имя таблицы. Это статья, в которой я использовал второй объект 'name', добавляемый к входам: http://stackoverflow.com/questions/35970079/azure-data-factory-multiple-activities-in-pipeline-execution-order – rcastagna

+0

Я предоставил полный код конвейера, хотя не тестировался на Azure, но должен работать. – Manish

 Смежные вопросы

  • Нет связанных вопросов^_^