Execute SQL Server Stored Procedure With User Parameter In Power BI

Sometimes there is a situation in which we need to get data by consuming SQL Server stored procedure. SQL Server stored procedure has parameters which we need to pass dynamically. Power BI provides a functionality to execute Stored Procedure using Managed Parameters. During this article we will talk about, • How to create Manage Parameter • How to pass manage parameter to a Stored Procedure • Invoke Query Result and load data to Power BI Desktop

Overview

Sometimes, there is a situation when we need to get the data by consuming SQL Server Stored Procedure. SQL Server Stored Procedures has parameters which we need to pass dynamically.

Power BI provides a functionality to execute Stored Procedure using Managed Parameters.

In this article, we will talk about the following.

  • How to create Manage Parameter
  • How to pass manage parameter to a Stored Procedure
  • Invoke Query Result and load data to Power BI Desktop

Limitation

This feature will work only for Import Mode.

Example

I have one procedure in SQL Server named “sp_getEmpshiftDetails” which has two parameters named “vStartDate” and “vEndDate”. I want to use this procedure and load the data into Power BI Desktop. I have attached the file with this article for practice purposes.

So, now let’s get started!

Step 1 - Create Manage Parameter in Power BI Desktop

  1. Open Power BI Desktop and from Home tab, select “Edit Queries”.



  2. Click on “Manage Parameters” and select “New Parameter”.



  3. It will open a popup to create a new parameter. Select “New”.

It will ask for the following information.

  • Name = Name of the parameter
  • Description = Description of Parameter
  • Required checkbox
  • Type = Datatype of a parameter
  • Suggested value
  • Current value
 

I created parameters “vStartDate” and “vEndDate”, as shown in the screenshot.

 

Step 2 - Load (Execute Stored Procedure)

  1. Now, from “Home”, select “New source”.



  2. Select “Databases”, select “SQL Server Database”.



  3. Fill in the required fields and in command window use the below line to execute the procedure.
    1. EXEC sp_getEmpshiftDetails '2015-06-23','2015-06-25'

  4. It will preview data. Click on “Load”.
 

Step 3 - Change Query in Advance Editor

1. Select Query and click on “Advanced Editor”.

 

Replace the existing query with new query.

  • Declare Parameter
  • Pass Parameter to Procedure

  1. let  
  2.   
  3. SQLSource = (vStartDate as date, vEndDate as date) =>  
  4.   
  5. let  
  6.   
  7. Source = Sql.Database("DHRUVIN\SQLEXPRESS""WMS_201", [Query="EXEC sp_getEmpshiftDetails '"Date.ToText(vStartDate) & "','" & Date.ToText(vEndDate)&"' #(lf)#(lf)#(lf) #(lf)"])  
  8.   
  9. in  
  10.   
  11. Source  
  12.   
  13. in  
  14.   
  15. SQLSource  

2. The below screenshot shows a comparison of both the queries.

 

Step 4 - Invoke Result

1. Select Query and enter start date and end date. Click “Invoke”.

 

2. It will show a warning like this. Click “Edit Permission”.

 

3. It will show a warning to run the query in Native Mode. Click “Run”.

 

4. It will load all the data.

 

5. Click “Close and Apply”.

 

Our data has been added to a Model.

Conclusion

Now, I hope you have got a better idea of “Managed Parameters” in Power BI. We can pass the dynamic parameters to SQL Server Stored procedures using this feature. Try this on your own and share your opinion with me.