代码之家  ›  专栏  ›  技术社区  ›  Estrobelai

azure数据工厂v2:如何将文件名传递给存储过程变量

  •  2
  • Estrobelai  · 技术社区  · 6 年前

    我有一个很大的azure sql表,其结构如下:

    Company     Revenue
    -------------------
    A              100
    B              200
    C              100
    .               .
    .               .
    .               .
    

    我现在正在azuredatafactoryv2上构建一个存储过程,它将每月从上面的azure sql事实表中删除一家特殊公司的所有记录。为此,该特殊公司应通过变量@company进行标识。存储过程的结构创建为:

    @company NVARCHAR(5)
    
    DELETE FROM table 
    WHERE [company] = @company
    

    由于每个公司每月都会有不同的excel文件将数据插入到该表中(带有复制活动),因此在添加最新的数据之前,我想使用上面的存储过程从该公司删除旧数据。

    然后,我想将excel文件(存储在blob容器中)的名称传递给变量“@company”,以便存储过程知道要从事实表中删除的相关数据是什么。例如:如果excel文件为“a”,则存储过程应为“delete from table where company=a”。

    关于如何将excel文件名传递给变量“@company”并在azure data factory v2上设置它的任何想法?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Jay Gong    6 年前

    关于如何将excel文件名传递给变量的任何想法 “@company”并在azure数据工厂v2上设置?

    嗨,安德烈。根据你的描述,我发现 Event-based trigger 在azure数据工厂也许可以满足你的需求。基于事件的触发器运行管道以响应azure blob存储中的事件,例如文件的到达或文件的删除。

    因此,当在blob存储中创建新的excel文件时(顺便说一句,它只支持v2存储帐户,请参阅 article ),你可以得到 @triggerBody().folderPath @triggerBody().fileName . 要在管道中使用这些属性的值,必须将这些属性映射到管道参数。将属性映射到参数后,可以通过 @pipeline.parameters.parameterName 整个管道中的表达式。( doc )

    您可以获取文件名并将其传递到存储过程中。然后执行删除和复制活动。

    希望对你有帮助。

    推荐文章