Power BI 实现实时更新Streaming Dataset

一、在PowerBI portal端需要准备的操作:

1. https://app.powerbi.cn 登陆,点击左侧My Workspace,你需要有一个账号

2. 选入Datasets,点击页面右上角的Creat,添加Streaming dataset

3.添加API{ }

4.记录Push URL , 这个后续作为post data的URL

二、在c#代码中的操作:

  1. realTimePushURL 改成上文你的Push URL
  2. 一定要注意数据结构 那个postData变量的结构要和streaming dataset的结构一致
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Text;
    using System.Threading.Tasks;
    using System.IO;
     
    namespace StreamDataToPowerBI
    {
        class Program
        {
            // Paste your own push URL below
            // e.g. https://api.powerbi.com/beta/2b958e42-b81e-441d-af13-801621ce8401/datasets/a5a15fd1-8cb6-4527-b2e6-f22f2a274d4d/rows?key=apsBX1ef%2F8a7ToL2xxxxxxxxxxxZeGATSyRYerZKpnu%2FbE2g2yDM0%2Bs4cDW9mqu5zKoGcQ27vJuh0Huw%3D%3D
            private static string realTimePushURL = "** paste your push URL here **";
            static void Main(string[] args)
            { 
                while (true) {
                    try
                    {
                        // Declare values that we're about to send
                                            String currentTime = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffZ");  //2017-11-03T06:23:35.521Z
                        Random r = new Random();
                        int currentValue = r.Next(0, 100);
                        // Send POST request to the push URL
                        // Uses the WebRequest sample code as documented here: https://msdn.microsoft.com/en-us/library/debx8sh9(v=vs.110).aspx
                        WebRequest request = WebRequest.Create(this.PostUri);
                        request.Method = "POST";
                        string postData = String.Format("[{{ "time": "{0}", "value": {1}}}]", currentTime, currentValue);
                        Console.WriteLine(String.Format("Making POST request with data: {0}", postData));
                        // Prepare request for sending
                        byte[] byteArray = Encoding.UTF8.GetBytes(postData);
                        request.ContentLength = byteArray.Length;
     
                        // Get the request stream.
                        Stream dataStream = request.GetRequestStream();
     
                        // Write the data to the request stream.
                        dataStream.Write(byteArray, 0, byteArray.Length);
     
                        // Close the Stream object.
                        dataStream.Close();
     
                        // Get the response.
                        WebResponse response = request.GetResponse();
     
                        // Display the status.
                        Console.WriteLine(String.Format("Service response: {0}", ((HttpWebResponse)response).StatusCode));
     
                        // Get the stream containing content returned by the server.
                        dataStream = response.GetResponseStream();
     
                        // Open the stream using a StreamReader for easy access.
                        StreamReader reader = new StreamReader(dataStream);
     
                        // Read the content.
                        string responseFromServer = reader.ReadToEnd();
     
                        // Display the content.
                        Console.WriteLine(responseFromServer);
     
                        // Clean up the streams.
                        reader.Close();
                        dataStream.Close();
                        response.Close();
     
                    } 
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex);
                    }
                    // Wait 1 second before sending
                    System.Threading.Thread.Sleep(1000);
                }
            }
        }
    }

三、在portal中设置展示结果,大致实现过程:

1. 先创建一个dashboard

2. 点击右上角的Add tile

3. 选定我们的streaming data tile 

4. 执行相应的添加即可

5.实时展示结果:(实时更新显示C#代码发来的random数据)

原文地址:https://www.cnblogs.com/yangwenbo214/p/9836348.html