Forum Discussion

MRenwick's avatar
MRenwick
Frequent Visitor
4 years ago
Solved

Using a DAX query in power query and would like to reference a previous step

Hello,

I'm using a DAX query to access analysis services in power query.  I'd like to reference a previous step as a filter.  In the below example, Instead of "US" in the TREATAS function, I'd like to use the value pulled in the Country step above.  How can I reference that step?

 

let

Source = Excel.CurrentWorkbook(){[Name="CountryTable"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Country", type text}}),
Country = #"Changed Type"{0}[Country],


#"Text Filter" = AnalysisServices.Database("SERVER1\CUBE1", "Wholesale",
[Query="/* START QUERY BUILDER */#(lf)
EVALUATE#(lf)SUMMARIZECOLUMNS(#(lf)
'Business Sector'[Country],#(lf)
KEEPFILTERS( TREATAS( {""US""}, 'Business Sector'[Country] )),#(lf)
""ERP Net Sls Qty"", [ERP Net Sls Qty]#(lf))#(lf)
/* END QUERY BUILDER */", Implementation="2.0"])
in
#"Text Filter"

  • MRenwick   great Q. I had a similar situation .

     

    Can you try the following and see if it helps

     

    let

    Source = Excel.CurrentWorkbook(){[Name="CountryTable"]}[Content],

    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Country", type text}}),

    Country = #"Changed Type"{0}[Country],

    #"Text Filter" = AnalysisServices.Database("SERVER1\CUBE1", "Wholesale",

    [Query="/* START QUERY BUILDER */#(lf)

    EVALUATE#(lf)SUMMARIZECOLUMNS(#(lf)

    'Business Sector'[Country],#(lf)

    KEEPFILTERS( TREATAS( {"""&Country&"""}, 'Business Sector'[Country] )),#(lf)

    ""ERP Net Sls Qty"", [ERP Net Sls Qty]#(lf))#(lf)

    /* END QUERY BUILDER */", Implementation="2.0"])

    in

    #"Text Filter"

     

    or

     

    let

    Source = Excel.CurrentWorkbook(){[Name="CountryTable"]}[Content],

    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Country", type text}}),

    Country = #"Changed Type"{0}[Country],

    #"Text Filter" = AnalysisServices.Database("SERVER1\CUBE1", "Wholesale",

    [Query="/* START QUERY BUILDER */#(lf)

    EVALUATE#(lf)SUMMARIZECOLUMNS(#(lf)

    'Business Sector'[Country],#(lf)

    KEEPFILTERS( TREATAS( {"""&Text.From(Country)&"""}, 'Business Sector'[Country] )),#(lf)

    ""ERP Net Sls Qty"", [ERP Net Sls Qty]#(lf))#(lf)

    /* END QUERY BUILDER */", Implementation="2.0"])

    in

    #"Text Filter"

9 Replies

  • smpa01's avatar
    smpa01
    Icon for Community Champion rankCommunity Champion

    MRenwick   great Q. I had a similar situation .

     

    Can you try the following and see if it helps

     

    let

    Source = Excel.CurrentWorkbook(){[Name="CountryTable"]}[Content],

    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Country", type text}}),

    Country = #"Changed Type"{0}[Country],

    #"Text Filter" = AnalysisServices.Database("SERVER1\CUBE1", "Wholesale",

    [Query="/* START QUERY BUILDER */#(lf)

    EVALUATE#(lf)SUMMARIZECOLUMNS(#(lf)

    'Business Sector'[Country],#(lf)

    KEEPFILTERS( TREATAS( {"""&Country&"""}, 'Business Sector'[Country] )),#(lf)

    ""ERP Net Sls Qty"", [ERP Net Sls Qty]#(lf))#(lf)

    /* END QUERY BUILDER */", Implementation="2.0"])

    in

    #"Text Filter"

     

    or

     

    let

    Source = Excel.CurrentWorkbook(){[Name="CountryTable"]}[Content],

    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Country", type text}}),

    Country = #"Changed Type"{0}[Country],

    #"Text Filter" = AnalysisServices.Database("SERVER1\CUBE1", "Wholesale",

    [Query="/* START QUERY BUILDER */#(lf)

    EVALUATE#(lf)SUMMARIZECOLUMNS(#(lf)

    'Business Sector'[Country],#(lf)

    KEEPFILTERS( TREATAS( {"""&Text.From(Country)&"""}, 'Business Sector'[Country] )),#(lf)

    ""ERP Net Sls Qty"", [ERP Net Sls Qty]#(lf))#(lf)

    /* END QUERY BUILDER */", Implementation="2.0"])

    in

    #"Text Filter"

    • MRenwick's avatar
      MRenwick
      Frequent Visitor

      The triple quotes with the & worked.  Thank you very much.  I had tried it with single and double quotes but not triple.  Awesome!

  • ValtteriN's avatar
    ValtteriN
    Icon for Community Champion rankCommunity Champion

    Hi,

    I think you can create a custom function based on the steps prior to #"Text filter" and then reference that in your query. So something like this:

    let
    Source = () => let
    Source = Excel.CurrentWorkbook(){[Name="CountryTable"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Country", type text}}),
    Country = #"Changed Type"{0}[Country]


    in
    Country
    in
    Source

    Hopefully this helps and if it does consider accepting this as a solution!

  • MRenwick's avatar
    MRenwick
    Frequent Visitor

    Thank you for the response ValtteriN .  I may not be doing something correctly.  I've tried a few different ways based on what you said.  Is this how the query should look?

    let

    Source = () => let
    Source = Excel.CurrentWorkbook(){[Name="CountryTable"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Country", type text}}),
    Country = #"Changed Type"{0}[Country]

    in
    Country,


    #"Text Filter" = AnalysisServices.Database("SERVER1\CUBE1", "Wholesale",
    [Query="/* START QUERY BUILDER */#(lf)
    EVALUATE#(lf)SUMMARIZECOLUMNS(#(lf)
    'Business Sector'[Country],#(lf)
    KEEPFILTERS( TREATAS( {Country}, 'Business Sector'[Country] )),#(lf)
    ""ERP Net Sls Qty"", [ERP Net Sls Qty]#(lf))#(lf)
    /* END QUERY BUILDER */", Implementation="2.0"])


    in
    #"Text Filter"

    • ValtteriN's avatar
      ValtteriN
      Icon for Community Champion rankCommunity Champion

      I was thinking that you could divide the query in two parts. The custom function would be a separate query that you call in your query. 

      e.g.

       

      • MRenwick's avatar
        MRenwick
        Frequent Visitor

        I see what you're saying.  That's a great idea.  I'm getting an error, token comma expected, when trying to call the function.  I've named my function query FunctionCountry.  In the below, that's what is underlined in red as the error.  I've tried it with and without "" around it.  

        let

         

        #"Text Filter" = AnalysisServices.Database("SERVER1\CUBE1", "Wholesale",
        [Query="/* START QUERY BUILDER */#(lf)
        EVALUATE#(lf)SUMMARIZECOLUMNS(#(lf)
        'Business Sector'[Country],#(lf)
        KEEPFILTERS( TREATAS( {"FunctionCountry()"}, 'Business Sector'[Country] )),#(lf)
        ""ERP Net Sls Qty"", [ERP Net Sls Qty]#(lf))#(lf)
        /* END QUERY BUILDER */", Implementation="2.0"])


        in
        #"Text Filter"