AzureDataFactory(十二)传参调用AzureFunction

转载 作者:来者不拒 更新时间:2024-02-02 09:48:40 24 4

一,引言

 在实际的项目中,Azure Data Factroy 中的 Data Flow 并不能彻底帮我们完成一系列复制逻辑计算, 比如我们需要针对数据集的每一行数据进行判断计算,Data Flow 就显的有些吃力。别怕,Azure Data Factory 提供了调用 Azure Function 的组件,有了代码的加持,那么解决更复杂的都能迎刃而解!!那么就开始今天的表演吧 。

--------------------我是分割线--------------------↳ 。

1,Azure Data Factory(一)入门简介

2,Azure Data Factory(二)复制数据

3,Azure Data Factory(三)集成 Azure Devops 实现CI/CD

4,Azure Data Factory(四)集成 Logic App 的邮件通知提醒

5,Azure Data Factory(五)Blob Storage 密钥管理问题

 6,Azure Data Factory(六)数据集类型为Dataverse的Link测试

7,Azure Data Factory(七)数据集验证之用户托管凭证

8,Azure Data Factory(八)数据集验证之服务主体(Service Principal)

9,Azure Data Factory(九)基础知识回顾

10,Azure Data Factory(十)Data Flow 组件详解 

11,Azure Data Factory(十一)Data Flow 的使用解析

12,Azure Data Factory(十二)传参调用 Azure Function

二,正文

1,准备 Azure Function

打开 Azure Portal ,点击 "Create a resource" 快速创建 Azure Function 。

以下就是刚创建好的  Azure  Function,Operating System 选择 "Windows",Runtime 选择:"node js" 。

添加 名字为 “Http_skip_holiday” 的 Function  。

Function Code:

 1 const intercept = require("azure-function-log-intercept");
 2 
 3 module.exports = async function (context, req) {
 4     context.log('JavaScript HTTP trigger function processed a request.');
 5     intercept(context);
 6     let lo_date = (req.query.lo_date || (req.body && req.body.lo_date));
 7     let skipday = (req.query.skipday || (req.body && req.body.skipday));
 8     context.log("req.body:"+req.body);
 9     context.log("lo_date:"+req.body.lo_date);
10     context.log("req.body:"+req.body.skipday);
11     //server Info
12 
13     // Holiday Handling
14     let holidayArray = ['2023-01-01','2023-01-06','2023-01-07','2023-01-13','2023-01-14','2023-01-21','2023-01-27','2023-01-28'];
15     context.log("holidayArray.length: ", holidayArray.length);
16 
17     let due_dateObj= calculate_dueDate(context,lo_date,holidayArray,skipday)
18     context.log("due_dateObj.Step: ", due_dateObj.Step);
19     context.res = {
20         status: 200, /* Defaults to 200 */
21         body: due_dateObj
22     };
23 }
24 
25 function calculate_dueDate(context,lodate, holidayArray, num) {
26     "use strict";
27     let DueDateObj={};
28     let lo_date = new Date(lodate);
29     let Year = lo_date.getFullYear();
30     let Month = lo_date.getMonth();
31     let day = lo_date.getDate();
32  
33     let dueDate;
34     let step = num;
35     let isWorkDay = false;
36     do {
37 
38         let currentDate = new Date(Year, Month, day + step);
39 
40         if (currentDate.toDateString() in holidayArray || (currentDate.getDay() < 1)) {
41             step++;
42         } else {
43             isWorkDay = true;
44         }
45     } while (!isWorkDay);
46  
47 
48     dueDate = new Date(Year, Month, day + step);
49     DueDateObj.DueDate=dueDate.toString("yyyy-MM-dd");
50     DueDateObj.Step=step;
51     context.log("dueDate:"+dueDate.toString("yyyy-MM-dd"));
52     return DueDateObj;
53 }

  。

  。

开启 Function 后,,我们使用 Postman 进行测试 。

注意:1)打开 Function 的 Filesystem Logs 。