How can we improve Power BI?

Provide username function in Power Query - M or DAX calculated columns

Being restricted to just using username() in measures (or AllowedRowsExpression) means that you cannot use the context of the current user in slicers or page level or report level filters.

Just to be clear, the desired result is not data security (that can be done through roles), it is to provide relevance. We want to be able to show a page that shows (for example) My Teams timesheet hours, perhaps next to a report page that shows an overview of the entire company.

You can provide some neat filtering using measures containing username(), but in particular, you can’t provide slicers (or page filters) that are cut down to just the list of relevant items based on the user logged in.

It would be extremely helpful if you could access the username value either via a function in PowerQuery M, or to allow username() to be referenced in a calculated column using DAX.
Trying to use username() in a calculated column currently gives the error:

"CUSTOMDATA and USERNAME functions are not supported in calculated columns. These functions may only be used in Measures or in the AllowedRowsExpression."

Perhaps there are security, functional or performance reasons why this isn't possible, but thought it worth putting forward.

59 votes
Sign in
Check!
(thinking…)
Reset
or sign in with
  • facebook
  • google
    Password icon
    I agree to the terms of service
    Signed in as (Sign out)

    We’ll send you updates on this idea

    Brian MatherBrian Mather shared this idea  ·   ·  Flag idea as inappropriate…  ·  Admin →

    6 comments

    Sign in
    Check!
    (thinking…)
    Reset
    or sign in with
    • facebook
    • google
      Password icon
      I agree to the terms of service
      Signed in as (Sign out)
      Submitting...
      • Lyle SpencerLyle Spencer commented  ·   ·  Flag as inappropriate

        Also, the comments below do not address what Brian is trying to do. Power BI RLS is post query, not at query time. Also the solution offered by anonymous to "=Sql.Database("(localdb)\v11.0","",[Query="SELECT SYSTEM_USER"])
        should do it" will not work as most queries, particularly if going through a gateway will have the service account context not the user running the report.

      • Lyle SpencerLyle Spencer commented  ·   ·  Flag as inappropriate

        We very much need this. This would allow us to provide security and context for many of our visuals. The role based RLS is not scalable when you have thousands of employees also the RLS data already lives in our database we just need to pass it the current user to retrieve data they are authorized to see. Another issue is often this data is sources from transactional finance tables with millions of rows. Pulling down the whole table then applying Power BI RLS after the fact is often again not practical.

      • Imke FeldmannImke Feldmann commented  ·   ·  Flag as inappropriate

        Agree and would like to take this one step further and specificly request for this feature for M: In order to filter the import into the data model already. This would speed up load time, simplify user experience, make the models faster and files slimmer...

      • Jon PriceJon Price commented  ·   ·  Flag as inappropriate

        I have simliar requirements. I would like project managers to be able to view their own projects by default, but to be able to remove the filter if necessary (eg. if they wish to look at projects for another project manager). Row level security works to filter to their own projects, but you can't then remove the filter.

      Feedback and Knowledge Base

      Ready to get started?

      Try new features of Power BI today by signing up and learn more about our powerful suite of apps.