
使用Power BI 流数据集API实时推送数据
使用Power BI 流数据集API实时推送数据
使用Power BI 流数据集API实时推送数据
Power BI实现实时的数据流,由于21v azure 流还不支持powerbi,因此另外一个方案就是使用API推送,请见下面步骤
1、创建流数据集
选择API
我这里定义了一个数据 FlowData,
数据集的Json格式
[ { "timespan" :"2022-06-20T03:21:46.639Z", "flow" :98.6 } ]
完成后:
现在可以使用:推送URL把数据推送上来。
2、使用函数应用推送数据
创建函数应用
推送是数据就有很多种了,这里我使用Function 来进行。
首先创建一个Function ,
创建一个函数应用
选择
类似这样的界面:
我使用.net 6 喝linux系统创建一个函数应用。
由于是模拟从数据库取出数据,这里我创建一个Azure SQL 。获取Azure的连接字符串。具体过程不做讲诉。由于是测试我使用公网进行连接
字符串类似如下
Server=tcp:xxx.database.chinacloudapi.cn,1433;Initial Catalog=pbitest;Persist Security Info=False;User ID=max;Password={your_password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
创建函数应用程序
创建Function也有很多方法,由于我习惯使用visual Studio,因此使用VS来创建。
1、新建项目
2、选择 Azure Functions
3、选择Time trigger, schedule 设置为*/5 * * * * *,就是5秒钟执行一次。
点击创建完成。
将 SqlClient 包添加到项目中
-
添加包含 SqlClient 库的 NuGet 包。 需要此数据访问库以连接到 SQL 数据库。
-
在 Visual Studio 2022 中打开本地函数应用项目。
-
在“解决方案资源管理器”中,右键单击函数应用项目,并选择“管理 NuGet 包”。
-
转到“浏览”选项卡,搜索 System.Data.SqlClient,找到后将其选中。
-
在“System.Data.SqlClient”页面,选择版本 4.8.3,然后单击“安装” 。
-
安装完成后,查看所做的更改,然后单击“确定”以关闭“预览”窗口。
-
如果显示“接受许可证”窗口,则单击“我接受”
-
找到local.settings.json ,在values 里面添加连接字符串如:
"AzureSQL_Connect": "Server=tcp:xxxxr.database.chinacloudapi.cn,1433;Initial Catalog=pbitest;Persist Security Info=False;User ID=max;Password= ;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
程序代码如下:
using System; using System.Net.Http; using System.Threading.Tasks; using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Host; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using System.Data.SqlClient; namespace FunctionApp1 { public class Function1 { [FunctionName("Function1")] public static async Task Run([TimerTrigger("*/5 * * * * *")] TimerInfo myTimer, ILogger log) { Random random = new Random(); string pbiurl = "自己数据集的API URL"; // Use class-level HttpClient as a best practice DateTime currentTime; var str = Environment.GetEnvironmentVariable("AzureSQL_Connect"); log.LogInformation(str); using (SqlConnection conn = new SqlConnection(str)) { conn.Open(); var text = "select top 1 [timespan] ,[flow] from[flowdata] order by timespan desc"; FlowRecording flowRecording = new FlowRecording(); using (SqlCommand cmd = new SqlCommand(text, conn)) { // Execute the command and log the # rows affected. SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { flowRecording.flow = Convert.ToInt16(reader["flow"]); flowRecording.timespan=Convert.ToDateTime(reader["timespan"]); } var jsonString = JsonConvert.SerializeObject(flowRecording); var postToPowerBi = HttpPostAsync(pbiurl, "[" + jsonString + "]"); // Add brackets for Power BI currentTime = GetDateTimeUtc(); log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}"); } } } private static async Task<HttpResponseMessage> HttpPostAsync(string url, string data) { // Construct an HttpContent object from StringContent HttpClient client = new HttpClient(); HttpContent content = new StringContent(data); HttpResponseMessage response = await client.PostAsync(url, content); response.EnsureSuccessStatusCode(); return response; } private static DateTime GetDateTimeUtc() { return DateTime.UtcNow; } public class FlowRecording { public int flow { get; set; } public DateTime timespan { get; set; } } } }
发布应用
完成后可以本地运行测试,测试完成后发布到function。浏览创建的function,下载发布配置文件:
鼠标右键点击程序,选择发布,导入配置文件
点击发布即可发布到应用程序
发布完成后,在函数应用中可以看到状态,
选择配置,添加应用配置
添加应用程序设置:
添加连接字符串
AzureSQL_Connect 值为 数据库连接串
3、创建实时仪表板
添加磁贴
选择自定义流数据
选择定义好的数据流
选择可视化效果
选择值
确定即可
再添加一个选择为折线图
选择如下:
测试效果如下:
更多推荐
所有评论(0)