[英]Azure data factory trigger creation using python
我一直按照 Microsoft 提供的步骤使用 python SDK 创建 ADF 触发器,但它不起作用。
# Create a trigger
tr_name = 'mytrigger'
scheduler_recurrence = ScheduleTriggerRecurrence(frequency='Minute', interval='15',start_time='2017-12-12T04:00:00Z', end_time='2017-12-12T05:00:00Z', time_zone='UTC')
pipeline_parameters = {'inputPath':'adftutorial/input', 'outputPath':'adftutorial/output'}
pipelines_to_run = []
pipeline_reference = PipelineReference('copyPipeline')
pipelines_to_run.append(TriggerPipelineReference(pipeline_reference, pipeline_parameters))
tr_properties = ScheduleTrigger(description='My scheduler trigger', pipelines = pipelines_to_run, recurrence=scheduler_recurrence)
adf_client.triggers.create_or_update(rg_name, df_name, tr_name, tr_properties)
# Start the trigger
adf_client.triggers.start(rg_name, df_name, tr_name)
它抛出以下错误。 我错过了什么?
pipeline_reference = PipelineReference('copyPipeline') TypeError: init () 采用 1 个位置参数,但给出了 2 个
谢谢你的帮助。
我觉得代码和文档看起来不错,检查需要为PipelineReference传递的参数
此外,Python 将一个名为“self”的参数传递给 object 中的每个方法。“self”类似于 JavaScript 中的“this”。“self”参数存储有关 object 中的值的信息。
当您尝试通过 class 中的方法传递参数而不指定“self”作为参数时,会引发“采用 1 个位置参数但给出 2 个”错误。
您通过将“self”作为参数添加到 class 中的所有方法来解决此错误。(在您的情况下为 Init)
我有同样的错误,并通过对 PipelineResource 和 TriggerPipelineReference 使用关键字 arguments 修复它,如下所示:
pipeline_reference = PipelineReference(reference_name='copyPipeline')
pipelines_to_run.append(TriggerPipelineReference(pipeline_reference=pipeline_reference, pipeline_parameters))
此外,数据工厂 SDK(截至发帖时)用 begin_start 替换了 start function,如下所示:
adf_client.triggers.begin_start(rg_name, df_name, tr_name)
问题源于 init function。例如,在 PipelineReference 的 init function 中,您会注意到 arguments 是 (self, *, reference_name: str, name: Optional[str] = None, **kwargs)
def __init__(
self,
*,
reference_name: str,
name: Optional[str] = None,
**kwargs
):
"""
:keyword reference_name: Required. Reference pipeline name.
:paramtype reference_name: str
:keyword name: Reference name.
:paramtype name: str
"""
super(PipelineReference, self).__init__(**kwargs)
self.reference_name = reference_name
self.name = name
根据文档:
“*”或“*identifier”之后的参数是关键字参数,只能通过关键字arguments传递。
TriggerPipelineReference 的 init function 遵循类似的方法,除了 pipeline_reference 被明确定义为默认值为 None 的关键字参数。
def __init__(
self,
*,
pipeline_reference: Optional["PipelineReference"] = None,
parameters: Optional[Dict[str, Any]] = None,
**kwargs
):
"""
:keyword pipeline_reference: Pipeline reference.
:paramtype pipeline_reference: ~azure.mgmt.datafactory.models.PipelineReference
:keyword parameters: Pipeline parameters.
:paramtype parameters: dict[str, any]
"""
super(TriggerPipelineReference, self).__init__(**kwargs)
self.pipeline_reference = pipeline_reference
self.parameters = parameters
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.