Power Query如何获取钉钉流程表单数据,并自动刷新Power BI报告,请详细说明。
引用chatGPT作答,要获取钉钉流程表单数据并自动刷新Power BI报告,可以使用Power Query中的Web数据源。以下是详细说明:
1.在钉钉中创建一个流程表单,并确保已提交一些数据。
2.打开Power BI Desktop,然后单击“开始”选项卡,选择“获取数据”。
3.在“获取数据”窗口中,选择“Web”选项卡,然后输入钉钉流程表单的URL。请确保您具有访问该表单的权限。
4.单击“确定”,然后等待Power Query从表单中提取数据。您可以选择要加载的表格或视图,或者根据需要自定义数据。
5.在Power Query编辑器中,选择“主页”选项卡,然后单击“刷新”选项卡。这将自动刷新表格中的数据。
6.在Power BI Desktop中创建一个报告并将表格添加到报告中。您可以使用Power BI的其他功能来自定义和优化报告。
7.单击“开始”选项卡中的“刷新”按钮以手动刷新报告。如果您要自动刷新报告,请选择“文件”选项卡中的“选项和设置”,然后选择“查询选项”>“刷新设置”。
8.在“刷新设置”中,选择“刷新频率”并选择适当的选项。您可以选择每分钟、每小时、每天或手动刷新。如果您选择定期刷新选项,请设置刷新时间表。
9.单击“确定”以保存更改。现在,Power BI将在定期时间自动刷新您的报告,并更新钉钉流程表单中的数据。
请注意,您需要有权访问钉钉流程表单中的数据,以便从Power Query中提取数据。如果您没有访问权限,则无法使用此方法获取和刷新数据。
首先,钉钉不支持Power Query连接,但支持从Web API获取数据。您需要从钉钉流程管理端开发自定义API,然后获取数据。
以下是获取钉钉流程表单数据并自动刷新Power BI报告的一些步骤:
在钉钉管理后台中,打开钉钉流程管理端并转到相应的流程。
开发相应的自定义API接口。
在Power BI中创建一个新的数据源。
开启Power Query编辑器并选择Web协议。
5.输入API地址并将调用类型设置为“GET”。
在“Headers”选项卡中添加必要的授权令牌(如果有)。
点击“完成”按钮返回Power BI。
在“字段”选项卡中选择需要添加到Power BI报告的字段。
点击“生成”按钮并保存数据源连接。
创建Power BI仪表板并制作报表。
为数据源设置刷新计划,以便数据能够定期刷新并自动更新Power BI仪表板和报表。
请注意,这只是一个简单的概述,因为具体步骤和操作可能因Power BI和钉钉环境而异。在执行此任务之前,请务必研究有关钉钉自定义API和Power BI数据源的详细信息。
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
获取钉钉流程表单数据并自动刷新Power BI报告的方法可以通过以下步骤完成:
let
appkey = "************",
appsecret = "***************",
corpID = "************",
url = "https://oapi.dingtalk.com/gettoken",
param = "?appkey="&appkey&"&appsecret="&appsecret,
token = Json.Document(Web.Contents(url¶m)) [access_token]
in
token
let
url = "https://oapi.dingtalk.com/topapi/processinstance/get",
access_token = GetAccessToken(),
param = "{\"process_instance_id\":\"******\"}", // 表示需要获取的流程实例ID
options = [Headers = [#"Content-Type"="application/json"], Content = Text.ToBinary(param)],
result = Json.Document(Web.Contents(url & "?access_token=" & access_token, options))
in
result
let
src = GetProcessInstanceData(), // 获取流程实例数据
formData = src [form_component_values], // 获取表单数据
jsonForm = Json.Document(formData), // 转换为JSON格式
formRecord = Record.FromList(jsonForm, {"name", "value"}), // 将JSON格式转为Record格式(类似于Key-Value形式)
tableForm = Table.FromRecords({formRecord}) // 将Record格式转换为表格形式
in
tableForm
在Power BI中创建针对表单数据的报告。可以根据实际需求选择不同类型的图表或表格来展示数据。
自动刷新Power BI报告。可以通过Power BI中的“刷新”功能来自动刷新报告。自动刷新需要在Power BI中设置数据源的刷新策略,并在钉钉应用中设置相应的API回调地址和加密方式。
完整代码如下:
let
appkey = "************",
appsecret = "***************",
corpID = "************",
processInstanceID = "******",
url_token = "https://oapi.dingtalk.com/gettoken",
url_api = "https://oapi.dingtalk.com/topapi/processinstance/get",
GetAccessToken = () => {
let
param = "?appkey="&appkey&"&appsecret="&appsecret,
token = Json.Document(Web.Contents(url_token¶m)) [access_token]
in
token
},
GetProcessInstanceData = () => {
let
access_token = GetAccessToken(),
param = "{\"process_instance_id\":\""&processInstanceID&"\"}",
options = [Headers = [#"Content-Type"="application/json"], Content = Text.ToBinary(param)],
result = Json.Document(Web.Contents(url_api & "?access_token=" & access_token, options))
in
result,
src = GetProcessInstanceData(),
formData = src [form_component_values],
jsonForm = Json.Document(formData),
formRecord = Record.FromList(jsonForm, {"name", "value"}),
tableForm = Table.FromRecords({formRecord})
in
tableForm
参考资料:
let
GetFormData = (start_time as datetime, end_time as datetime) =>
let
url = "https://oapi.dingtalk.com/topapi/processinstance/listids",
headers = [#"Content-Type"="application/json", #"Authorization"="Bearer your_access_token"],
body = "{""process_code"":""your_process_code"",""start_time"":""" & start_time & """,""end_time"":""" & end_time & """}",
options = [Headers=headers, Content=Text.ToBinary(body)],
response = Web.Contents(url, options),
json = Json.Document(response),
data = json[#"result"][#"list"]
in
data
in
GetFormData
let
start_time = #date(2021,11,1),
end_time = #date(2021,11,30),
GetFormDataQuery = GetFormData(start_time, end_time),
#"Converted to Table" = Table.FromList(GetFormDataQuery, Splitter.SplitByNothing(), null, null, ExtraValues.Error)
in
#"Converted to Table"
let
Source = Excel.Workbook(File.Contents("C:\Users\your_path\your_file.xlsx"), null, true),
Sheet1_Sheet = Source{[Item="Sheet1",Kind="Sheet"]}[Data],
#"Promoted Headers" = Table.PromoteHeaders(Sheet1_Sheet, [PromoteAllScalars=true]),
#"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Date", type date}, {"Sales", Int64.Type}})
in
#"Changed Type"
我引用ChatGPT作答:
您可以使用Power Query来获取钉钉流程表单数据并自动刷新Power BI报告。以下是一些步骤,您可以参考:
Power Query是一款功能强大的数据提取和转换工具,可以帮助用户轻松地从各种数据源中提取数据并进行清洗、转换和加载。在获取钉钉流程表单数据并自动刷新Power BI报告的过程中,可以使用Power Query来实现。
以下是详细的步骤:
1 获取钉钉流程表单API地址
首先,需要获取钉钉流程表单的API地址。可以在钉钉开发者文档中查找相关的API文档,并根据文档中的说明获取API地址。
2 在Power Query中创建数据源
打开Power BI Desktop,然后选择“获取数据”选项卡中的“Power Query编辑器”。在Power Query编辑器中,选择“从Web”选项,然后输入钉钉流程表单API地址。在输入完API地址后,点击“确定”按钮。
3 获取数据并进行转换
在Power Query编辑器中,可以看到从钉钉流程表单API中获取到的数据。这时,需要对数据进行转换,以便将其与Power BI报告中的其他数据进行整合。可以使用Power Query的各种功能,例如筛选、排序、合并等,来对数据进行转换。
4 设置数据刷新
完成数据转换后,需要设置数据刷新功能,以便在钉钉流程表单中的数据发生变化时自动更新Power BI报告。在Power Query编辑器中,选择“查询选项”菜单中的“查询选项”命令。在“查询选项”对话框中,选择“刷新”选项卡,然后将刷新间隔设置为所需的时间间隔。这样,Power BI报告就会在指定的时间间隔内自动刷新数据。
5 加载数据
完成数据转换和刷新设置后,需要将数据加载到Power BI报告中。在Power Query编辑器中,选择“关闭并应用”按钮,然后选择“加载到”选项卡中的“数据模型”选项。
6 在Power BI报告中使用数据
完成数据加载后,可以在Power BI报告中使用数据。在Power BI报告中,可以创建各种报表、图表和仪表盘,以便更好地展示数据。
以上就是使用Power Query获取钉钉流程表单数据并自动刷新Power BI报告的详细步骤。
您可以参考这篇文章了解更多信息。
https://zhuanlan.zhihu.com/p/144618434
https://zhuanlan.zhihu.com/p/94300429