Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
9 years ago
Solved

Power Query: Extract distinct values from column as new query

Hi,

 

I have a fairly large query with 1,5 million rows, which is growing by around 5000 rows per day. From that query I want to extract the distinct values from one specific column and create a new table with those values, so I can use it as a dimension and for forming relationships in my model.

 

Right now, I have referenced the first query, deleted all the columns besides the one I need, and then done a "Remove Duplicates", with a result of two distinct text values. This works, but at query refresh, this simple table containing only two text values as a final result will load all 1,5 million rows first, and then clean it up.

 

Is there a more efficient way to complete the same task in Power Query, so I can reduce refresh time?

  • Anonymous's avatar
    Anonymous
    9 years ago

    Hi Anonymous,

     

    You can try to create a blank query to reference original source, then use list.distinct to remove duplicate records.

     

    let
        DistinctSource = List.Distinct(Sheet2[Date])// List.Distinct(QueryName[ColumnName])
    in
        DistinctSource

     

    Sheet2(22582 rows) -> Date(953 rows)

     

     

    Regards,

    Xiaoxin Sheng

16 Replies

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hi Anonymous,

     

    You can try to create a blank query to reference original source, then use list.distinct to remove duplicate records.

     

    let
        DistinctSource = List.Distinct(Sheet2[Date])// List.Distinct(QueryName[ColumnName])
    in
        DistinctSource

     

    Sheet2(22582 rows) -> Date(953 rows)

     

     

    Regards,

    Xiaoxin Sheng

    • BiBra's avatar
      BiBra
      Helper III

      I have a question for this. I am trying to do this myself:
      you write // List.Distinct(QueryName[ColumnName]), is this the new query you're working in?

      If not, what is it?

      • Anonymous's avatar
        Anonymous
        Not applicable

        Hi BiBra,

         

        Nope, it just means the description of my formula.

         

        Regards,

        Xiaoxin Sheng

    • NotHappyAtAll's avatar
      NotHappyAtAll
      Frequent Visitor

      This works. But the query still refreshes all the 1.5 million records! So it does not solve the question.

      That means you still have to wait for the query to finish once more. This is made like this to "make shure" Power-Bi have all the data once more pulled from the souse. Quite annoying actually.    

    • nsampath's avatar
      nsampath
      Regular Visitor

      Thanks for posting the solution, it definitely helped me tackle the problem that I was facing.

  • In the Power Query editor:

    Right click on your existing query and choose "Reference".

    Use "Choose Columns" to select only the column which you want your unique values generated from.

    Right click on the column and choose "Remove Duplicates"

    • Power_BI_Guy's avatar
      Power_BI_Guy
      New Member

      This is the users current solution, however this is inefficient as it loads the entire table and then performs the transformations.

       

      Current best solution is:

       

      let
          DistinctSource = List.Distinct(Sheet2[Date])// List.Distinct(QueryName[ColumnName])
      in
          DistinctSource
      • alfranco17's avatar
        alfranco17
        Advocate I

        Thanks! This is just the alternative I was looking for.

    • Stephen_Sink's avatar
      Stephen_Sink
      Frequent Visitor

      I like this solution because it allows you to continue to use table tools and create new custom column off the de-duplicated list. Power BI Guy's solution may be more effecient however.

  • Stephen_Sink's avatar
    Stephen_Sink
    Frequent Visitor

    I struggled for a while with this becuase there is some key puntuation missing from this solution. Here's what worked for me - I am refrenceing another query

    = List.Distinct(#"QueryName"[ColumnName])



    Key things missing was having the # and "" in the right spot

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hello

    I faced the same problem you asked for and i am quite new to power bi and mostly know its basics.

    what i did was i created a new table in power bi desktop and  used the formula

     

    NewTable = DISTINCT(Tablename [field])
     
    and it worked.
  • vangiang's avatar
    vangiang
    Regular Visitor

    hi All. i noticed the icon in front of that Query 2 looks very thin, wonder if that indicates distinct values? Thanks in advance.

     

    • Anonymous's avatar
      Anonymous
      Not applicable

      Hi vangiang , not sure if this is still helpful, but that means that your query is in List form. The implication is that most of the operations you can apply to the data, like Merge, Append, Replace values and what-not are not available.

      To hijack the response given above, you can convert it to a table using the following:

      let
          DistinctSource = Table.FromList(List.Distinct(Sheet2[Date]))
      in
          DistinctSource