演示效果
操作步聚
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(); } } } }