cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
ROGI Frequent Visitor
Frequent Visitor

Generate Missing Data via Script

Hi, Im starting to use Power BI I came from QlikView. I want to know if in Power Desktop I can generate data via script, for example I have some uses cases.

 

1- Fill data from-to date

 

I have in my DB a entry

 

Id - From     -      To

a    1/1/2016       1/5/2016

b    1/1/2016       1/2/2016

 

 

Result wanted in Power BI:

 

Id - Date     

a    1/1/2016

a    1/2/2016 

a    1/3/2016

a    1/4/2016 

a    1/5/2016 

b    1/1/2016

b    1/2/2016

 

 

 

2- Fill the gaps between dates.

 

I have an exchange rate table

 

Date      -    Exchange Rate

1/1/2016     9,716    

1/5/2016     9,801

1/7/2016     10,01

 

Result wanted:

 

Date      -    Exchange Rate

1/1/2016     9,716    

1/2/2016     9,716

1/3/2016     9,716

1/4/2016     9,716

1/5/2016     9,801

1/6/2016     9,801

1/7/2016     10,01

 

Can some1 in first place tell me if this is posible via Script in Power BI. And if trully can be made pls tell me how and provide documentation about how to create custom loads.

 

Thx

 

2 REPLIES 2
PowerBIGuy Member
Member

Re: Generate Missing Data via Script

Instead of duplicating your data maybe you can try searching for a solution based on slowly changing dimensions. there are several ways to approach this. Here's one example in the following link

Business Intelligence Architect / Consultant
Moderator WillT
Moderator

Re: Generate Missing Data via Script

For generating a table of dates, take a look at the CALENDARAUTO() DAX function. This creates a Calculated Table across all the date range in your model.

 

Then you can add a column to that table that pulls the relevant Exchange Rate for the dates that have a value.

 

You could fill in the remaining Exchange Rate values by using the a DAX calculation like this:

 

FullExchangeRate =

CALCULATE(

   LASTNONBLANK(Query1[Exchange Rate], TRUE()) ,

   CALCULATETABLE( DATESYTD(Query1[Date]) ,

                   DATESBETWEEN(Query1[Date],

                                BLANK(),

                                LASTDATE(Query1[Date])

                  ) ,

                  ALL(Query1)) ,

   ALL(Query1)

)

 

There might be a more efficient way to do that, but it'll work!