演示效果
操作步聚
1.创建流数据集 ,打开POWER BI , 进入工作区,点网页左上方 "创建"选择流数据集,并按下面图进行操作.
其中网页URL
https://api.powerbi.cn/beta/401fb29b-4a28-45ff-b60f-10ccea5c6af7/datasets/d188c4d5-66a4-4f47-b1cb-a3a31903e6d6/rows?language=zh-CN&key=vhu2thGIs3ibpF4IyDVvc7q69eBaGLYY%2Bqsaz6iXfqKQ6aievEdv2ULKrb8xZA5Y5UCs9DYbn2Z5%2FB1AiYBf4g%3D%3D
power shell 调用代码如下:
$endpoint = "https://api.powerbi.cn/beta/401fb29b-4a28-45ff-b60f-10ccea5c6af7/datasets/d188c4d5-66a4-4f47-b1cb-a3a31903e6d6/rows?language=zh-CN&key=vhu2thGIs3ibpF4IyDVvc7q69eBaGLYY%2Bqsaz6iXfqKQ6aievEdv2ULKrb8xZA5Y5UCs9DYbn2Z5%2FB1AiYBf4g%3D%3D" $payload = @{ "CPU" =98.6 "Memory" =98.6 "MonitorDt" ="2020-06-07T15:04:16.380Z" } Invoke-RestMethod -Method Post -Uri "$endpoint" -Body (ConvertTo-Json @($payload))
2.打开POWER SHELL 复制以上代码,到power shell中. 若无错误信息,表示调用成功, 上面就是一个用power shell代码的事例.
3. 创建Dashboard,ashboard,选创建一个报表,里面包含简单的图表. 以下内容就是刚才创建的,点图表连接下面红色框中内容,进行在线创建图表.
开发完报表如图所示,并且选中图钉 下图红色框内,
C#代码
通过C#代码来实现刚才power shell推送数据的功能.
c#代码如下:
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Net; using System.Net.Http; using System.Text; using System.Threading; using System.Threading.Tasks; namespace PowerBIStream { class Program { static void Main(string[] args) { //1.以后要替换的,每个都不一样 string EndPoint = "https://api.powerbi.cn/beta/401fb29b-4a28-45ff-b60f-10ccea5c6af7/datasets/361f7c2b-aa44-4150-8d4d-80a3785ad3ad/rows?language=zh-CN&key=AMigWo1at7dz1a5nxr9VrXBWEInO5j5a1ciNuXXdIKnj3CfWT7uNOmsskbRQ6c5gfFTaswcSwqF9uieW43oOsw%3D%3D"; do { MonitorInfo info = new MonitorInfo(); //2.发送JSON 数据,(CPU,内存,时间) var payload = new { CPU = info.CPU, Memory = info.Memory, MonitorDt = System.DateTime.Now.ToLongTimeString() }; var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(payload); using (var wc = new WebClient()) { wc.Headers.Add("Content-Type", "application/json"); wc.UploadString(EndPoint, "POST", "[" + jsonString + "]"); Console.WriteLine(jsonString); } Thread.Sleep(500); } while (true); } class MonitorInfo { public float Memory; public float CPU; public MonitorInfo() { PerformanceCounter cpuCounter; PerformanceCounter ramCounter; cpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total"); cpuCounter.CounterName = "% Processor Time"; ramCounter = new PerformanceCounter("Memory", "Available MBytes"); CPU = cpuCounter.NextValue(); Thread.Sleep(500); CPU = cpuCounter.NextValue(); Memory = ramCounter.NextValue(); } } } }