Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
8 years ago
Solved

Lookup hierarchical data in Query Editor

Hi,   From Folder Path, I succeeded in computing Folder ID (Index column), Depth and Parent Path  in M Query Editor in Power BI. However, I m struggling to compute Look Up column "Parent Folder Id...
  • ImkeF's avatar
    ImkeF
    8 years ago

    For an M-solution, you might want to try this one ;-) :

     

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WionxzEvKr4iJUYrVQeKFZCZnp5YU4xQOyC9PLVJw8sSpIDg4KBgu6ViUnJFZlorJR7UbXRjdETjlMVyDUyXMWbEA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [#"Folder Path" = _t]),
        #"Trimmed Text" = Table.TransformColumns(Source,{{"Folder Path", each Text.Trim(_, "\"), type text}}),
        #"Added Index" = Table.AddIndexColumn(#"Trimmed Text", "Index", 1, 1),
        AddedDepth = Table.AddColumn(#"Added Index", "Depth", each List.Count(List.Select(Text.ToList([Folder Path]), (listItem) => listItem="\"))),
        AddedParentFolderPath = Table.AddColumn(AddedDepth, "Parent Folder Path", each Text.BeforeDelimiter([Folder Path], "\", {0, RelativePosition.FromEnd}), type text),
        SelfMergeForID = Table.NestedJoin(AddedParentFolderPath,{"Parent Folder Path"},AddedParentFolderPath,{"Folder Path"},"AddedParentFolderPath",JoinKind.LeftOuter),
        ExpandID = Table.ExpandTableColumn(SelfMergeForID, "AddedParentFolderPath", {"Index"}, {"Index.1"})
    in
        ExpandID

    It uses a self-merge to retrieve the ID.

    Another advantage is that the Parent Path is calculated dynamically, so it will automatically adjust to any depth.

     

    Imke Feldmann

    www.TheBIccountant.com -- How to integrate M-code into your solution  -- Check out more PBI- learning resources here

  • Anonymous's avatar
    Anonymous
    8 years ago

    Wow!! 

     

    Thank you ImkeF. You actually solved 2 problems instead of one !!!

    Unfortunately I can only mark it as an answer once ;-)

     

    Thank you for the quick response and the link to M query reference material.