Forum Discussion

jomikk's avatar
jomikk
Helper I
9 years ago
Solved

Help translating VBA to Power Query

Hi, I want to create a dynamic query in Power BI. But I need to change my VBA in query to Power Query such that I can use it with a parameter

 

My original MDX query contains this piece of VBA:

 

Str(Int(CDbl(Now()) - 38718))

It takes todays date and time, converts it to a number, subtracts a value needed to get right row from cube, converts it to a whole number (integer) and then finally changes it to a string so that it can be used in the query.

 

I have tried to do the following in Power Query, without luck.

 

Value = Text.From(Int64.From(Number.From(DateTime.LocalNow()) - 38718))
  • Figured out what I did wrong!

     

    I used Power Query formula inside StrToMember (which expects VBA formulaes):

     

    StrToMember("[Report Date].[Report Date].&[" + Str(Int(CDbl(Now()) - 38718)) + "]")

    So I changed this to:

     

    [Report Date].[Report Date].&["& Value &"]

    And then my original Value formula worked as I expected.

     

    Value = Text.From(Int64.From(Number.From(DateTime.LocalNow()) - 38718))

    But I don't know if this is the "best" way to do it, but it works

3 Replies

  • MattAllington's avatar
    MattAllington
    Community Champion

    You want something like this

     

    Duration.Days(DateTime.Date(DateTime.LocalNow())-#date(2015,1,1))

    • jomikk's avatar
      jomikk
      Helper I

      Cheers Matt, can you explain what this is doing? Keep in mind that I want a number, not a date.

       

      Here is the cube member for context:

       

      StrToMember("[Report Date].[Report Date].&[" + Str(Int(CDbl(Now()) - 38718)) + "]")

      So using this VBA code for today it would yield:

       

      [Report Date].[Report Date].&[3502]
  • Figured out what I did wrong!

     

    I used Power Query formula inside StrToMember (which expects VBA formulaes):

     

    StrToMember("[Report Date].[Report Date].&[" + Str(Int(CDbl(Now()) - 38718)) + "]")

    So I changed this to:

     

    [Report Date].[Report Date].&["& Value &"]

    And then my original Value formula worked as I expected.

     

    Value = Text.From(Int64.From(Number.From(DateTime.LocalNow()) - 38718))

    But I don't know if this is the "best" way to do it, but it works