{"id":5408,"date":"2018-11-27T16:31:05","date_gmt":"2018-11-27T16:31:05","guid":{"rendered":"https:\/\/zappysys.com\/blog\/?p=5408"},"modified":"2018-12-13T11:44:42","modified_gmt":"2018-12-13T11:44:42","slug":"push-data-into-power-bi-dataset-from-sql-server","status":"publish","type":"post","link":"https:\/\/zappysys.com\/blog\/push-data-into-power-bi-dataset-from-sql-server\/","title":{"rendered":"Push data into a Power BI dataset from SQL Server"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p style=\"text-align: justify;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-3951\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/06\/power-bi-logo-310x310-150x150.png\" alt=\"Power BI Integration\" width=\"100\" height=\"100\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/06\/power-bi-logo-310x310-150x150.png 150w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/06\/power-bi-logo-310x310-300x300.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/06\/power-bi-logo-310x310.png 310w\" sizes=\"(max-width: 100px) 100vw, 100px\" \/>In this article, you will learn how to push data into a <a href=\"https:\/\/powerbi.microsoft.com\/en-us\/\" target=\"_blank\" rel=\"noopener\">Power BI<\/a> dataset from SQL Server. Power BI is a Microsoft reporting product that can get data from virtually any source and display it nicely in a report or a dashboard. Among its dataset types, it has a streaming dataset into which you can push data from a <a href=\"https:\/\/docs.microsoft.com\/en-us\/rest\/api\/power-bi\/\" target=\"_blank\" rel=\"noopener\">Power BI REST API<\/a>. Once pushed, data will be immediately refreshed in a visual, pinned to a\u00a0dashboard. Thus this approach of sending data to a streaming dataset is a perfect\u00a0way for displaying real-time data. Yet it is not possible to push data to a dataset straight from SQL Server out of the box. However, with <a href=\"https:\/\/zappysys.com\/products\/odbc-powerpack\/\" target=\"_blank\" rel=\"noopener\">ZappySys ODBC PowerPack<\/a> it is possible to achieve that quite easily. We will employ one of its apps &#8211; <a href=\"https:\/\/zappysys.com\/products\/odbc-powerpack\/data-gateway\/\" target=\"_blank\" rel=\"noopener\">ZappySys Data Gateway<\/a> &#8211; to make HTTP requests and push data to a streaming dataset.<\/p>\n<p>The use cases when you may want to push data to a streaming dataset from a SQL Server are:<\/p>\n<ul>\n<li>Displaying real-time data from many SQL Server instances at once (and you cannot use the <em>DirectQuery<\/em> option in a report).<\/li>\n<li>Displaying real-time data when many sources write to a dataset, and a SQL Server is one of them.<\/li>\n<li>Any other case.<\/li>\n<\/ul>\n<p>Let&#8217;s begin and write some data to a Power BI streaming dataset!<\/p>\n<h2>Prerequisites<\/h2>\n<ol>\n<li>You have a Power BI account and you have basic Power BI skills.<\/li>\n<li>SQL Server instance installed (can be a <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/database-engine\/configure-windows\/sql-server-2016-express-localdb\" target=\"_blank\" rel=\"noopener\">SQL Server Express LocalDB<\/a> instance).<\/li>\n<li><a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/ssms\/download-sql-server-management-studio-ssms\" target=\"_blank\" rel=\"noopener\">SQL Server Management Studio<\/a> (SSMS) installed.<\/li>\n<li><a href=\"https:\/\/zappysys.com\/products\/odbc-powerpack\/\" target=\"_blank\" rel=\"noopener\">ZappySys ODBC PowerPack<\/a>\u00a0installed\u00a0(must be installed on a\u00a0Windows machine; can be a different machine than SQL Server is installed on).<\/li>\n<\/ol>\n<h2>Step By Step\u00a0&#8211; Push data into a Power BI dataset from a SQL Server<\/h2>\n<div class=\"content_block\" id=\"custom_post_widget-5441\"><h3>Create a streaming dataset in Power BI<\/h3>\r\nThe first thing you need to do is to create a streaming dataset. We will create a simple dataset for demo purposes which will have two columns: <strong>Timestamp<\/strong> and <strong>Temperature<\/strong>.\r\n<ol style=\"margin-left: 0;\">\r\n \t<li>Go to Power BI portal, hit <strong>My Workspace<\/strong>, <strong>+ Create<\/strong> and then click <strong>Streaming dataset<\/strong>:\r\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5424\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/powerbi-create-streaming-dataset-1.png\" alt=\"\" width=\"945\" height=\"443\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/powerbi-create-streaming-dataset-1.png 945w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/powerbi-create-streaming-dataset-1-300x141.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/powerbi-create-streaming-dataset-1-768x360.png 768w\" sizes=\"(max-width: 945px) 100vw, 945px\" \/><\/li>\r\n \t<li>Then select <strong>API<\/strong> and click <strong>Next<\/strong>:\r\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5425\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/powerbi-create-streaming-dataset-2-select-api.png\" alt=\"\" width=\"550\" height=\"419\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/powerbi-create-streaming-dataset-2-select-api.png 550w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/powerbi-create-streaming-dataset-2-select-api-300x229.png 300w\" sizes=\"(max-width: 550px) 100vw, 550px\" \/><\/li>\r\n \t<li>Give dataset a name, add two columns and check <strong>Historic data analysis<\/strong> to enable data history and the ability to create report\u00a0easily (otherwise you will be able to create a tile in a dashboard only):\r\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5426\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/powerbi-create-streaming-dataset-3-give-a-name.png\" alt=\"\" width=\"550\" height=\"740\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/powerbi-create-streaming-dataset-3-give-a-name.png 550w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/powerbi-create-streaming-dataset-3-give-a-name-223x300.png 223w\" sizes=\"(max-width: 550px) 100vw, 550px\" \/><\/li>\r\n \t<li>Once a dataset is created, copy <strong>Push URL<\/strong> to a notepad so we can use it later. Also, note the structure of the JSON we will have to use to submit live data into the created dataset:<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5427\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/powerbi-create-streaming-dataset-4-created.png\" alt=\"\" width=\"547\" height=\"462\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/powerbi-create-streaming-dataset-4-created.png 547w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/powerbi-create-streaming-dataset-4-created-300x253.png 300w\" sizes=\"(max-width: 547px) 100vw, 547px\" \/><\/li>\r\n<\/ol><\/div>\n<div class=\"content_block\" id=\"custom_post_widget-5411\"><h3><span style=\"font-size: 14pt;\">Configure ZappySys Data Gateway<\/span><\/h3>\r\nNow let's look at steps to configure Data Gateway after installation.\r\n<ol style=\"margin-left: 0;\">\r\n \t<li style=\"text-align: left;\">Assuming you have installed\u00a0<a href=\"https:\/\/zappysys.com\/products\/odbc-powerpack\/\" target=\"_blank\" rel=\"noopener\">ZappySys ODBC PowerPack<\/a>\u00a0using default options (Which also enables Data Gateway Service)<\/li>\r\n \t<li style=\"text-align: left;\">Search \"Gateway\" in your start menu and click ZappySys Data Gateway\r\n<div class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/start-menu-open-zappysys-data-gateway.png\">\r\n<img decoding=\"async\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/start-menu-open-zappysys-data-gateway.png\" alt=\"Open ZappySys Data Gateway\" \/><\/a>\r\n<p class=\"wp-caption-text\">Opening ZappySys Data Gateway<\/p>\r\n\r\n<\/div><\/li>\r\n \t<li>First, make sure Gateway Service is running (Verify Start icon is disabled)<\/li>\r\n \t<li>Also, verify Port on General Tab\r\n<div class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/03\/ZappySys-data-gateway-port-5000.png\">\r\n<img decoding=\"async\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/03\/ZappySys-data-gateway-port-5000.png\" alt=\"Port Number setting on ZappySys Data Gateway\" \/><\/a>\r\n<p class=\"wp-caption-text\">Checking port number setting on ZappySys Data Gateway<\/p>\r\n\r\n<\/div><\/li>\r\n \t<li>Now go to Users tab. <strong>Click Add<\/strong> icon to add a new user. Check Is admin to give access to all data sources you add in future. If you don't check admin then you have to manually configure user permission for each data source.\r\n<div class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/zappysys-data-gateway-add-user.png\">\r\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5453\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/gateway-configure-add-user.png\" alt=\"\" width=\"564\" height=\"438\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/gateway-configure-add-user.png 564w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/gateway-configure-add-user-300x233.png 300w\" sizes=\"(max-width: 564px) 100vw, 564px\" \/><\/a>\r\n<p class=\"wp-caption-text\">Adding the Gateway user<\/p>\r\n\r\n<\/div><\/li>\r\n<\/ol>\r\n&nbsp;<\/div>\n<h3>Add a data source in the Gateway<\/h3>\n<p>It&#8217;s time to add a data source, which we will use to POST data to Power BI REST API:<\/p>\n<ol>\n<li>In the Gateway, click on <strong>Data sources<\/strong> tab, click <strong>Add<\/strong>, give data source a name and set <em>Connector Type<\/em> to <strong>Native &#8211; ZappySys JSON Driver<\/strong>:<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5439\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/gateway-create-datasource-1-1.png\" alt=\"\" width=\"562\" height=\"573\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/gateway-create-datasource-1-1.png 562w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/gateway-create-datasource-1-1-294x300.png 294w\" sizes=\"(max-width: 562px) 100vw, 562px\" \/><\/li>\n<li>Then click <strong>Edit<\/strong> to modify the data source:<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5440\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/gateway-create-datasource-2-2.png\" alt=\"\" width=\"562\" height=\"385\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/gateway-create-datasource-2-2.png 562w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/gateway-create-datasource-2-2-300x206.png 300w\" sizes=\"(max-width: 562px) 100vw, 562px\" \/><\/li>\n<li>Finally, paste into <em>Url <\/em>textbox <strong>Push URL<\/strong>\u00a0of the dataset which we saved in a previous step. Also, set <em>HTTP Request Method<\/em> to <strong>POST<\/strong>:\n<div id=\"attachment_5430\" style=\"width: 812px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5430\" class=\"wp-image-5430 size-full\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/gateway-create-datasource-3.png\" alt=\"Configure REST API Connection for Power BI dataset insert (Using ZappySys JSON \/ REST Driver)\" width=\"802\" height=\"702\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/gateway-create-datasource-3.png 802w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/gateway-create-datasource-3-300x263.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/gateway-create-datasource-3-768x672.png 768w\" sizes=\"(max-width: 802px) 100vw, 802px\" \/><p id=\"caption-attachment-5430\" class=\"wp-caption-text\">Configure REST API Connection for Power BI dataset insert (Using ZappySys JSON \/ REST Driver)<\/p><\/div><\/li>\n<\/ol>\n<h3>Add a Linked Server to the Gateway<\/h3>\n<div class=\"content_block\" id=\"custom_post_widget-5432\">Once you configured the data source in Gateway, we can now set up a Linked Server in a SQL Server.\r\n<ol style=\"margin-left: 10px;\">\r\n \t<li>Open SSMS and connect to a SQL Server.<\/li>\r\n \t<li>Go to Root &gt; Server Objects &gt; Linked Servers node. Right click and click <strong>New Linked Server...\r\n<\/strong>\r\n<div class=\"wp-caption alignnone\">\r\n<a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/03\/create-new-linked-server-ssms.png\">\r\n<img decoding=\"async\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/03\/create-new-linked-server-ssms.png\" alt=\"Add Linked Server in SQL Server\" \/>\r\n<\/a>\r\n<p class=\"wp-caption-text\">Adding Linked Server in SQL Server<\/p>\r\n\r\n<\/div><\/li>\r\n \t<li>Now enter the linked server name, select Provider as SQL Native Client.<\/li>\r\n \t<li>Enter data source as <strong><span class=\"lang:default decode:true crayon-inline\">GatewayServerName,PORT_NUMBER<\/span><\/strong>\u00a0where server name is where ZappySys Gateway is running (can be the same as SQL Server machine or a remote machine). Default PORT_NUMBER is 5000 but confirm that on the Gateway &gt; General tab in case it's different.<\/li>\r\n \t<li>Enter Catalog Name. This must match name from Data gateway Data sources grid &gt; Name column\r\n<div class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/ssms-sql-server-configure-linked-server-2.png\">\r\n<img decoding=\"async\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/ssms-sql-server-configure-linked-server-2.png\" alt=\"Configure Linked Server Provider, Catalog, Server, Port for ZappySys Data Gateway Connection\" \/>\r\n<\/a>\r\n<p class=\"wp-caption-text\">Configure Linked Server Provider, Catalog, Server, Port for ZappySys Data Gateway Connection<\/p>\r\n<\/div>\r\n<div style=\"color: #31708f;background-color: #d9edf7;border-color: #bce8f1;padding: 15px;margin-bottom: 20px;border: 1px solid transparent;border-radius: 4px;\">\r\n<strong>INFO:<\/strong><br\/>\r\n<ul>\r\n    <li>\r\n      For <strong>SQL Server 2012, 2014, 2016, 2017, and 2019<\/strong>, use the <em>SQL Server Native Client 11.0<\/em> as the Provider.\r\n    <\/li>\r\n    <li>\r\n      For <strong>SQL Server 2022 or higher<\/strong>, use the <em>Microsoft OLE DB Driver for SQL Server<\/em> as the Provider.\r\n    <\/li>\r\n  <\/ul>\r\n<\/div><\/li>\r\n \t<li>Click on Security Tab and select the last option \"<strong>Be made using this security context<\/strong>\". Enter your gateway user account here.\r\n<div class=\"wp-caption alignnone\">\r\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5456\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/add-linked-server-sql-server-3-security-2.png\" alt=\"\" width=\"690\" height=\"625\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/add-linked-server-sql-server-3-security-2.png 690w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/add-linked-server-sql-server-3-security-2-300x272.png 300w\" sizes=\"(max-width: 690px) 100vw, 690px\" \/>\r\n<p class=\"wp-caption-text\">Configuring Linked Server credentials<\/p>\r\n<\/li>\r\n<li>\r\n        <p>Optional: Under the Server Options Tab, Enable <b>RPC<\/b> and <b>RPC Out<\/b> and Disable Promotion of Distributed Transactions<b>(MSDTC)<\/b>.<\/p>\r\n\t\t<div class=\"wp-caption alignnone\">\r\n\t\t\t<img decoding=\"async\" class=\"block margin-bottom-10 img-thumbnail\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/linked-server-options-rpc-msdtc.png\" title=\"RPC and MSDTC Settings\" alt=\"RPC and MSDTC Settings\" \/>\r\n\t\t\t<p class=\"wp-caption-text\">RPC and MSDTC Settings<\/p>\r\n\t\t<\/div>\r\n        <hr \/>\r\n        <p>\r\n            You need to enable RPC Out if you plan to use <b><i>EXEC(...) AT [MY_LINKED_SERVER_NAME]<\/i><\/b> rather than OPENQUERY.\r\n            <br \/>\r\n            If don't enabled it, you will encounter the <i>'Server \"MY_LINKED_SERVER_NAME\" is not configured for RPC'<\/i> error.\r\n        <\/p>\r\n        <p>\r\n            Query Example:\r\n            <code class=\"sql\">EXEC('Select * from Products') AT [MY_LINKED_SERVER_NAME]<\/code>\r\n        <\/p>\r\n        <hr \/>\r\n        <p>\r\n            If you plan to use <b><i>'INSERT INTO...EXEC(....) AT [MY_LINKED_SERVER_NAME]'<\/i><\/b> in that case you need to Disable Promotion of Distributed Transactions(MSDTC).\r\n            <br \/>\r\n            If don't disabled it, you will encounter the <i>'The operation could not be performed because OLE DB provider \"SQLNCLI11\/MSOLEDBSQL\" for linked server \"MY_LINKED_SERVER_NAME\" was unable to begin a distributed transaction.'<\/i> error.\r\n        <\/p>\r\n        <p>\r\n            Query Example:\r\n<pre class=\"\">Insert Into dbo.Products \r\nEXEC('Select * from Products') AT [MY_LINKED_SERVER_NAME]<\/pre>\r\n        <\/p>\r\n        <hr \/>\r\n<\/li>\r\n \t<li>Click OK to save the Linked Server.<\/li>\r\n<\/ol><\/div>\n<h3>Writing data into Power BI dataset from SQL Server<\/h3>\n<p>Once you add a Linked Server you can execute a query to push data into a Power BI streaming dataset:<\/p>\n<ol style=\"margin-left: 0;\">\n<li>In the same SQL Server Management Studio create a new query and paste the code below. In <em>Body<\/em> attribute, we pass the JSON in the same format which was shown when we created a Power BI dataset:\n<pre class=\"lang:tsql decode:true\">SELECT * FROM\r\nOPENQUERY([GATEWAY], 'SELECT * FROM $\r\nWITH (Body=''[ \r\n\t{ \"Timestamp\" :\"2018-11-15T02:57:04.547Z\", \"Temperature\" : 50.5 },\r\n\t{ \"Timestamp\" :\"2018-11-16T02:57:04.547Z\", \"Temperature\" : 55.5 },\r\n\t{ \"Timestamp\" :\"2018-11-17T02:57:04.547Z\", \"Temperature\" : 60.5 },\r\n\t{ \"Timestamp\" :\"2018-11-18T02:57:04.547Z\", \"Temperature\" : 57.5 },\r\n\t{ \"Timestamp\" :\"2018-11-19T02:57:04.547Z\", \"Temperature\" : 62.3 }\r\n]''\r\n,meta=''[ { \"Name\": \"Dummy\", \"Type\": \"String\" }]'' )')<\/pre>\n<div class=\"su-note\"  style=\"border-color:#e5da9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#fff4b7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><strong>Note:<\/strong> Use the same Linked Server name you created in a previous step. In our case, it is &#8220;GATEWAY&#8221;.<\/div><\/div><\/li>\n<li>Execute the query.<\/li>\n<\/ol>\n<h2>The results: creating a Power BI report<\/h2>\n<p>Now it&#8217;s time to check the results and see if data went through:<\/p>\n<ol style=\"margin-left: 0;\">\n<li>Go to Power BI portal.<\/li>\n<li>Select <strong>Datasets\u00a0<\/strong>and click on the add new report icon:\n<div id=\"attachment_5447\" style=\"width: 705px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5447\" class=\"wp-image-5447 size-full\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/powerbi-create-report-from-streaming-dataset-1.png\" alt=\"Create new Power BI Report for real time dataset\" width=\"695\" height=\"384\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/powerbi-create-report-from-streaming-dataset-1.png 695w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/powerbi-create-report-from-streaming-dataset-1-300x166.png 300w\" sizes=\"(max-width: 695px) 100vw, 695px\" \/><p id=\"caption-attachment-5447\" class=\"wp-caption-text\">Create new Power BI Report for real time dataset<\/p><\/div><\/li>\n<li>Add a Line Chart, a Table and link them to the dataset.<\/li>\n<li>You should see the data we pushed to the dataset:\n<div id=\"attachment_5448\" style=\"width: 596px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5448\" class=\"wp-image-5448 size-full\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/powerbi-create-report-from-streaming-dataset-2.png\" alt=\"Showing real time data in Power BI dashboard\" width=\"586\" height=\"343\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/powerbi-create-report-from-streaming-dataset-2.png 586w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/11\/powerbi-create-report-from-streaming-dataset-2-300x176.png 300w\" sizes=\"(max-width: 586px) 100vw, 586px\" \/><p id=\"caption-attachment-5448\" class=\"wp-caption-text\">Showing real time data in Power BI dashboard<\/p><\/div><\/li>\n<\/ol>\n<div class=\"su-note\"  style=\"border-color:#e5da9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#fff4b7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><strong>Note:<\/strong> To see real-time data, pin a visual to a dashboard. Live data can be seen only in a dashboard since only there data is refreshed when a new piece of data is received. However, it does not work with reports &#8211; if you pin a whole report to a dashboard it won&#8217;t update data in real-time. <\/div><\/div>\n<h2>Conclusion<\/h2>\n<p style=\"text-align: justify;\">You learned how to push data into a Power BI streaming dataset directly from SQL Server. It was possible to achieve that with ZappySys Data Gateway and SQL Server Linked Server option. At first, we created a streaming dataset in Power BI, then configured a datasource in the Gateway, followed with adding a Linked Server to the Gateway, executed T-SQL query in SSMS and pushed some data to the dataset and finally created a Power BI report to check the received data.<\/p>\n<p style=\"text-align: justify;\">When we set <strong>Historic data analysis<\/strong> option when creating a dataset, we, in turn, created a dataset of type <strong>Push <\/strong>(if we left it off, it would be of type <strong>Streaming<\/strong>). It allowed us\u00a0to create\u00a0a report easily on top of it, but it has certain <a href=\"https:\/\/docs.microsoft.com\/en-us\/power-bi\/developer\/api-rest-api-limitations\" target=\"_blank\" rel=\"noopener\">limitations<\/a>. Just be aware when using this option and check <a href=\"https:\/\/docs.microsoft.com\/en-us\/power-bi\/service-real-time-streaming\" target=\"_blank\" rel=\"noopener\">Power BI service documentation<\/a> for more info.<\/p>\n<p style=\"text-align: justify;\">Finally, in SSMS, we executed a query with predefined data. Therefore in real life, if you want to push data from an existing table, you will have to build JSON from it. Make sure you construct <a href=\"https:\/\/jsonlint.com\/\" target=\"_blank\" rel=\"noopener\">a valid JSON<\/a> and escape the symbols that need to be escaped (<a href=\"https:\/\/www.json.org\/\" target=\"_blank\" rel=\"noopener\">such as a double-quote or a backslash<\/a>).<\/p>\n<h2>References<\/h2>\n<p><a href=\"https:\/\/powerbi.microsoft.com\/en-us\/\" target=\"_blank\" rel=\"noopener\">https:\/\/powerbi.microsoft.com\/en-us\/<\/a><\/p>\n<p><a href=\"https:\/\/docs.microsoft.com\/en-us\/rest\/api\/power-bi\/\" target=\"_blank\" rel=\"noopener\">https:\/\/docs.microsoft.com\/en-us\/rest\/api\/power-bi\/<\/a><\/p>\n<p><a href=\"https:\/\/docs.microsoft.com\/en-us\/power-bi\/service-real-time-streaming\" target=\"_blank\" rel=\"noopener\">https:\/\/docs.microsoft.com\/en-us\/power-bi\/service-real-time-streaming<\/a><\/p>\n<p><a href=\"https:\/\/docs.microsoft.com\/en-us\/power-bi\/developer\/api-rest-api-limitations\" target=\"_blank\" rel=\"noopener\">https:\/\/docs.microsoft.com\/en-us\/power-bi\/developer\/api-rest-api-limitations<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction In this article, you will learn how to push data into a Power BI dataset from SQL Server. Power BI is a Microsoft reporting product that can get data from virtually any source and display it nicely in a report or a dashboard. Among its dataset types, it has a streaming dataset into which [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":3951,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[277,380,347],"tags":[6,298,3,48],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\r\n<title>Push data into a Power BI dataset from SQL Server | ZappySys Blog<\/title>\r\n<meta name=\"description\" content=\"Push data into a Power BI dataset from SQL Server - ZappySys Blog\" \/>\r\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/zappysys.com\/blog\/push-data-into-power-bi-dataset-from-sql-server\/\" \/>\r\n<meta property=\"og:locale\" content=\"en_US\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"Push data into a Power BI dataset from SQL Server | ZappySys Blog\" \/>\r\n<meta property=\"og:description\" content=\"Push data into a Power BI dataset from SQL Server - ZappySys Blog\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/zappysys.com\/blog\/push-data-into-power-bi-dataset-from-sql-server\/\" \/>\r\n<meta property=\"og:site_name\" content=\"ZappySys Blog\" \/>\r\n<meta property=\"article:published_time\" content=\"2018-11-27T16:31:05+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2018-12-13T11:44:42+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/06\/power-bi-logo-310x310.png\" \/>\r\n\t<meta property=\"og:image:width\" content=\"310\" \/>\r\n\t<meta property=\"og:image:height\" content=\"310\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\r\n<meta name=\"author\" content=\"ZappySys\" \/>\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"ZappySys\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/zappysys.com\/blog\/push-data-into-power-bi-dataset-from-sql-server\/\",\"url\":\"https:\/\/zappysys.com\/blog\/push-data-into-power-bi-dataset-from-sql-server\/\",\"name\":\"Push data into a Power BI dataset from SQL Server | ZappySys Blog\",\"isPartOf\":{\"@id\":\"https:\/\/zappysys.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/zappysys.com\/blog\/push-data-into-power-bi-dataset-from-sql-server\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/zappysys.com\/blog\/push-data-into-power-bi-dataset-from-sql-server\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/06\/power-bi-logo-310x310.png\",\"datePublished\":\"2018-11-27T16:31:05+00:00\",\"dateModified\":\"2018-12-13T11:44:42+00:00\",\"author\":{\"@id\":\"https:\/\/zappysys.com\/blog\/#\/schema\/person\/c146068d4cb053724ae5ce85759c3ada\"},\"description\":\"Push data into a Power BI dataset from SQL Server - ZappySys Blog\",\"breadcrumb\":{\"@id\":\"https:\/\/zappysys.com\/blog\/push-data-into-power-bi-dataset-from-sql-server\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/zappysys.com\/blog\/push-data-into-power-bi-dataset-from-sql-server\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/zappysys.com\/blog\/push-data-into-power-bi-dataset-from-sql-server\/#primaryimage\",\"url\":\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/06\/power-bi-logo-310x310.png\",\"contentUrl\":\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/06\/power-bi-logo-310x310.png\",\"width\":310,\"height\":310,\"caption\":\"Power BI Integration\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/zappysys.com\/blog\/push-data-into-power-bi-dataset-from-sql-server\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/zappysys.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Push data into a Power BI dataset from SQL Server\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/zappysys.com\/blog\/#website\",\"url\":\"https:\/\/zappysys.com\/blog\/\",\"name\":\"ZappySys Blog\",\"description\":\"SSIS \/ ODBC Drivers \/ API Connectors for JSON, XML, Azure, Amazon AWS, Salesforce, MongoDB and more\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/zappysys.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/zappysys.com\/blog\/#\/schema\/person\/c146068d4cb053724ae5ce85759c3ada\",\"name\":\"ZappySys\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/zappysys.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/60165d46d0b33aefb91df61a22b0e1f4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/60165d46d0b33aefb91df61a22b0e1f4?s=96&d=mm&r=g\",\"caption\":\"ZappySys\"},\"url\":\"https:\/\/zappysys.com\/blog\/author\/gliaskus\/\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Push data into a Power BI dataset from SQL Server | ZappySys Blog","description":"Push data into a Power BI dataset from SQL Server - ZappySys Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zappysys.com\/blog\/push-data-into-power-bi-dataset-from-sql-server\/","og_locale":"en_US","og_type":"article","og_title":"Push data into a Power BI dataset from SQL Server | ZappySys Blog","og_description":"Push data into a Power BI dataset from SQL Server - ZappySys Blog","og_url":"https:\/\/zappysys.com\/blog\/push-data-into-power-bi-dataset-from-sql-server\/","og_site_name":"ZappySys Blog","article_published_time":"2018-11-27T16:31:05+00:00","article_modified_time":"2018-12-13T11:44:42+00:00","og_image":[{"width":310,"height":310,"url":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/06\/power-bi-logo-310x310.png","type":"image\/png"}],"author":"ZappySys","twitter_card":"summary_large_image","twitter_misc":{"Written by":"ZappySys","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/zappysys.com\/blog\/push-data-into-power-bi-dataset-from-sql-server\/","url":"https:\/\/zappysys.com\/blog\/push-data-into-power-bi-dataset-from-sql-server\/","name":"Push data into a Power BI dataset from SQL Server | ZappySys Blog","isPartOf":{"@id":"https:\/\/zappysys.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/zappysys.com\/blog\/push-data-into-power-bi-dataset-from-sql-server\/#primaryimage"},"image":{"@id":"https:\/\/zappysys.com\/blog\/push-data-into-power-bi-dataset-from-sql-server\/#primaryimage"},"thumbnailUrl":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/06\/power-bi-logo-310x310.png","datePublished":"2018-11-27T16:31:05+00:00","dateModified":"2018-12-13T11:44:42+00:00","author":{"@id":"https:\/\/zappysys.com\/blog\/#\/schema\/person\/c146068d4cb053724ae5ce85759c3ada"},"description":"Push data into a Power BI dataset from SQL Server - ZappySys Blog","breadcrumb":{"@id":"https:\/\/zappysys.com\/blog\/push-data-into-power-bi-dataset-from-sql-server\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zappysys.com\/blog\/push-data-into-power-bi-dataset-from-sql-server\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zappysys.com\/blog\/push-data-into-power-bi-dataset-from-sql-server\/#primaryimage","url":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/06\/power-bi-logo-310x310.png","contentUrl":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/06\/power-bi-logo-310x310.png","width":310,"height":310,"caption":"Power BI Integration"},{"@type":"BreadcrumbList","@id":"https:\/\/zappysys.com\/blog\/push-data-into-power-bi-dataset-from-sql-server\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zappysys.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Push data into a Power BI dataset from SQL Server"}]},{"@type":"WebSite","@id":"https:\/\/zappysys.com\/blog\/#website","url":"https:\/\/zappysys.com\/blog\/","name":"ZappySys Blog","description":"SSIS \/ ODBC Drivers \/ API Connectors for JSON, XML, Azure, Amazon AWS, Salesforce, MongoDB and more","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zappysys.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/zappysys.com\/blog\/#\/schema\/person\/c146068d4cb053724ae5ce85759c3ada","name":"ZappySys","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zappysys.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/60165d46d0b33aefb91df61a22b0e1f4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/60165d46d0b33aefb91df61a22b0e1f4?s=96&d=mm&r=g","caption":"ZappySys"},"url":"https:\/\/zappysys.com\/blog\/author\/gliaskus\/"}]}},"_links":{"self":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts\/5408"}],"collection":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/comments?post=5408"}],"version-history":[{"count":30,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts\/5408\/revisions"}],"predecessor-version":[{"id":5577,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts\/5408\/revisions\/5577"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/media\/3951"}],"wp:attachment":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/media?parent=5408"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/categories?post=5408"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/tags?post=5408"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}