Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Join the FabCon + SQLCon recap series. Up next: Power BI, Real-Time Intelligence, IQ and AI, and Data Factory take center stage. All sessions are available on-demand after the live show. Register now

Reply
AlexAuto2026
New Member

Dynamic filtering between two tables

Hello, I have a question about dynamic filtering between two tables that do not have a direct relationship.

The requirement is: when using a hierarchical slicer (default slicer with levels), the “User” slicer should also automatically filter accordingly. For example, when selecting the “Technology Division,” the User slicer should automatically show only members belonging to that level and its child levels.

I’ve tried some approaches such as creating a bridge table and applying DAX filters to the User slicer, but the results are still not as expected.

I would appreciate any guidance. Thank you.
Link sample file: https://drive.google.com/file/d/1UytBF5HUNV0ix86qclRsSRvWnyeeqK7k/view?usp=drive_link

1 ACCEPTED SOLUTION
johnt75
Super User
Super User

You can create a measure like

Employee is visible = 
VAR CurrentCode = SELECTEDVALUE( User[Mã Bộ Phận (Ngẫu nhiên các Level)] )
VAR Result =
    SWITCH(
        SELECTEDVALUE( User[Cấp độ mã] ),
        "Level 2",
        IF( CurrentCode IN VALUES( Org[Level 2 Code] ), 1 ),
        "Level 3",
        IF( CurrentCode IN VALUES( Org[Level 3 Code] ), 1 ),
        "Level 4",
        IF( CurrentCode IN VALUES( Org[Level 4 Code] ), 1 )
    )
RETURN Result

and use this as a filter on the user slicer, set to show only when the value is 1.

View solution in original post

7 REPLIES 7

Hi @AlexAuto2026,

 

Slicers only interact through model relationships — DAX alone cannot “force” one slicer to filter another reliably.

If you want slicer-to-slicer interaction → you MUST use relationships.

 

Solution:
In the Advanced Editor, replace the existing code with the following.

let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("tVdLb9tGEP4rC51aIIskPvTOh16VSEkk46RIfWApVlxIXArU0oCPRQ45+GKjKIoeglg2AiNFjbqPS0QEOVDw/+A/6SzFxwpVwUKOLxKX8+18s7Pz4suXDSXw5zY9QZKsNB41Nr+yTZGVxj/RCWqTZOmj9XkanzsbOZYHKjwdrl9RNPeSPwFktddnlRAPWi1YWd7dLZomH9G30ZMnB18hK0zjKzRLPuZIQGHJtBpHj3Yb0fOAk6AeoR4aBzb18n2m1G+a8Kx4BFEvWYJYI2n8A0VyuvrdqVBYk2Ex3JhYqUFPc4gmY/XpQ9Ovz9L4F4Lgb7UkwumBXGp/RnLd9kVqfefJDwpyHasHD0uen1tN4z8QQCvi4dd7E8OBlgyxEEgh9ixAn8Lq7jaN39CJYIDM41OfeCT5lSInjd9H3P9cNYM910Wkqtgw62wB+08dDx2n8bt8m8QtscIIPMuSS38nApuHXMcLbtpbAAqYMvoAgp/Xht+9+HkKZyf/EcCLu/IWOLU83JN6FKWrK8ojGQ09fiCWfCi9D9RDych0BIhlFSSXwGv8vLMnp+KtX/lokfzloB7EACC85EIkVQwtPy+cdH2eXBDUCdiMUDfHAAB3+nX0mh1OXUZKzVrPgqfyLYLIT1ef4PD8Yq+cCoVNy9j2Da9+4PEJgi3x66jwvGVgWdvPDJVMCLNnu6RY7bZhZQYO4QB3TOxcCAJsDpSHYhy64fdB6NvUcR9L44VAOmwa+5GavGJMudNo0TmGhkDczFZ5eZEcRo5tRoIitEGKJaW2qehecknRAqjyfR3h+ljIC8sOCJZUHmbKxiwZfdHP77iw00tWDppBaJAvi9hUNazID2qOFZ1k9XAMSVPlBPAazdp7300sVJf1WXLBM3m1DCrevq5mV1CKUC+NPyAKE0HBDxBs9moT7j78W+7pQLxk1f0cdvY1UzCDr2rMsHjBcLzkpmw5rS5vYj3IdsSCqn/BawgvZUuE9CwUv4PfwvmKgrt6bRDej9Xy4PyfBEZLerEvo/A+m1SuI8TubgX2rn64Xd7UbLRgWfvPcYDBSqvOBCX5GzbSCaxeFxutf/V26Cyra4p8UO+XKKw2uRWy7UxdOkaWW04dIMBy8+GpW2FA2Q7u1t7cHYhsHt7XVRWBMfIqAP7VDav4uzofqc2TBXN9JI19Unm9hc1vaiP88/B3LWRG83kQsscddzYfu4upaMaz2plCgaCNf4ZY4wkOg1k1tim8lGmRvdXZ4S0ePjNESZ5t/IPktGhyAMH9+ia3N7kOIXEzR1P4ex8JnF3tvgfuBxOyYMRZCJz9QbuxGaCOgZYKzeWSf3BxtUV1G7T/x0wlZK3Sz3eOpOzuhZo5ik4gBZLfysowkrK4AjU8L2D6CniWWBG3QhyjAYSVQb0n/tOMXD8LbfBWunrH8vGqdBVYMuKKRgoyMx1zfhFF/o3gLgz4Ij06+gc=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Level 1" = _t, #"Level 1 Code" = _t, #"Level 2 (Khối/Phòng lớn)" = _t, #"Level 2 Code" = _t, #"Level 3 (Phòng/Bộ phận)" = _t, #"Level 3 Code" = _t, #"Level 4 (Nhóm/Tổ)" = _t, #"Level 4 Code" = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Level 1", type text}, {"Level 1 Code", type text}, {"Level 2 (Khối/Phòng lớn)", type text}, {"Level 2 Code", type text}, {"Level 3 (Phòng/Bộ phận)", type text}, {"Level 3 Code", type text}, {"Level 4 (Nhóm/Tổ)", type text}, {"Level 4 Code", type text}}),
#"Renamed Columns" = Table.RenameColumns(#"Changed Type",{{"Level 1", "Level 1()"}, {"Level 1 Code", "Level 1"}, {"Level 2 Code", "Level 2"}, {"Level 3 Code", "Level 3"}, {"Level 4 Code", "Level 4"}}),
#"Unpivoted Only Selected Columns" = Table.Unpivot(#"Renamed Columns", {"Level 1", "Level 2", "Level 3", "Level 4"}, "Attribute", "Value"),
#"Renamed Columns1" = Table.RenameColumns(#"Unpivoted Only Selected Columns",{{"Attribute", "Levels"}, {"Value", "Level Codes"}})
in
#"Renamed Columns1"

 

And create One to Many relationship between Org and User Table using Levels Column.

 

This will work as per your expectation.

SharmilaBrisca_0-1776679883801.png

Hope I answered Your Question

 

Thanks and Regards,

GainInsights Solution

Trusted Fabric Partner - https://gain-insights.com/partnerships/microsoft/
www.gain-insights.com

 

 

 

Thank you for your support, but my customers would prefer not to display the levels. They would rather use an organisational chart with a parent–child structure.

Hi @AlexAuto2026,

Slicers only interact through model relationships — DAX alone cannot “force” one slicer to filter another reliably.

If you want slicer-to-slicer interaction → you MUST use relationships.
Solution:
Update the Power Query M script in the Advanced Editor by replacing the specified steps with the new M code.

let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("tVdLb9tGEP4rC51aIIskPvTOh16VSEkk46RIfWApVlxIXArU0oCPRQ45+GKjKIoeglg2AiNFjbqPS0QEOVDw/+A/6SzFxwpVwUKOLxKX8+18s7Pz4suXDSXw5zY9QZKsNB41Nr+yTZGVxj/RCWqTZOmj9XkanzsbOZYHKjwdrl9RNPeSPwFktddnlRAPWi1YWd7dLZomH9G30ZMnB18hK0zjKzRLPuZIQGHJtBpHj3Yb0fOAk6AeoR4aBzb18n2m1G+a8Kx4BFEvWYJYI2n8A0VyuvrdqVBYk2Ex3JhYqUFPc4gmY/XpQ9Ovz9L4F4Lgb7UkwumBXGp/RnLd9kVqfefJDwpyHasHD0uen1tN4z8QQCvi4dd7E8OBlgyxEEgh9ixAn8Lq7jaN39CJYIDM41OfeCT5lSInjd9H3P9cNYM910Wkqtgw62wB+08dDx2n8bt8m8QtscIIPMuSS38nApuHXMcLbtpbAAqYMvoAgp/Xht+9+HkKZyf/EcCLu/IWOLU83JN6FKWrK8ojGQ09fiCWfCi9D9RDych0BIhlFSSXwGv8vLMnp+KtX/lokfzloB7EACC85EIkVQwtPy+cdH2eXBDUCdiMUDfHAAB3+nX0mh1OXUZKzVrPgqfyLYLIT1ef4PD8Yq+cCoVNy9j2Da9+4PEJgi3x66jwvGVgWdvPDJVMCLNnu6RY7bZhZQYO4QB3TOxcCAJsDpSHYhy64fdB6NvUcR9L44VAOmwa+5GavGJMudNo0TmGhkDczFZ5eZEcRo5tRoIitEGKJaW2qehecknRAqjyfR3h+ljIC8sOCJZUHmbKxiwZfdHP77iw00tWDppBaJAvi9hUNazID2qOFZ1k9XAMSVPlBPAazdp7300sVJf1WXLBM3m1DCrevq5mV1CKUC+NPyAKE0HBDxBs9moT7j78W+7pQLxk1f0cdvY1UzCDr2rMsHjBcLzkpmw5rS5vYj3IdsSCqn/BawgvZUuE9CwUv4PfwvmKgrt6bRDej9Xy4PyfBEZLerEvo/A+m1SuI8TubgX2rn64Xd7UbLRgWfvPcYDBSqvOBCX5GzbSCaxeFxutf/V26Cyra4p8UO+XKKw2uRWy7UxdOkaWW04dIMBy8+GpW2FA2Q7u1t7cHYhsHt7XVRWBMfIqAP7VDav4uzofqc2TBXN9JI19Unm9hc1vaiP88/B3LWRG83kQsscddzYfu4upaMaz2plCgaCNf4ZY4wkOg1k1tim8lGmRvdXZ4S0ePjNESZ5t/IPktGhyAMH9+ia3N7kOIXEzR1P4ex8JnF3tvgfuBxOyYMRZCJz9QbuxGaCOgZYKzeWSf3BxtUV1G7T/x0wlZK3Sz3eOpOzuhZo5ik4gBZLfysowkrK4AjU8L2D6CniWWBG3QhyjAYSVQb0n/tOMXD8LbfBWunrH8vGqdBVYMuKKRgoyMx1zfhFF/o3gLgz4Ij06+gc=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Level 1" = _t, #"Level 1 Code" = _t, #"Level 2 (Khối/Phòng lớn)" = _t, #"Level 2 Code" = _t, #"Level 3 (Phòng/Bộ phận)" = _t, #"Level 3 Code" = _t, #"Level 4 (Nhóm/Tổ)" = _t, #"Level 4 Code" = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Level 1", type text}, {"Level 1 Code", type text}, {"Level 2 (Khối/Phòng lớn)", type text}, {"Level 2 Code", type text}, {"Level 3 (Phòng/Bộ phận)", type text}, {"Level 3 Code", type text}, {"Level 4 (Nhóm/Tổ)", type text}, {"Level 4 Code", type text}}),
#"Renamed Columns" = Table.RenameColumns(#"Changed Type",{{"Level 1", "Level 1()"}, {"Level 1 Code", "Level 1"}, {"Level 2 Code", "Level 2"}, {"Level 3 Code", "Level 3"}, {"Level 4 Code", "Level 4"}}),
#"Unpivoted Only Selected Columns" = Table.Unpivot(#"Renamed Columns", {"Level 1", "Level 2", "Level 3", "Level 4"}, "Attribute", "Value"),
#"Renamed Columns1" = Table.RenameColumns(#"Unpivoted Only Selected Columns",{{"Attribute", "Levels"}, {"Value", "Level Codes"}})
in
#"Renamed Columns1"

Then try to create one to many relationship between Org and User Table using Levels Key Column

I have attached the link to know more about modeling and relationships.
https://learn.microsoft.com/en-gb/power-bi/transform-model/desktop-relationships-understand

 

Thanks and Regards,

Sharmila Brisca

GainInsights Solutions
Trusted Microsoft Partner - https://gain-insights.com/partnerships/microsoft/

www.gain-insights.com

 

Hope I answered Your Question

johnt75
Super User
Super User

You can create a measure like

Employee is visible = 
VAR CurrentCode = SELECTEDVALUE( User[Mã Bộ Phận (Ngẫu nhiên các Level)] )
VAR Result =
    SWITCH(
        SELECTEDVALUE( User[Cấp độ mã] ),
        "Level 2",
        IF( CurrentCode IN VALUES( Org[Level 2 Code] ), 1 ),
        "Level 3",
        IF( CurrentCode IN VALUES( Org[Level 3 Code] ), 1 ),
        "Level 4",
        IF( CurrentCode IN VALUES( Org[Level 4 Code] ), 1 )
    )
RETURN Result

and use this as a filter on the user slicer, set to show only when the value is 1.

Thank you! This is exactly what I wanted.

ryan_mayu
Super User
Super User

@AlexAuto2026 

i can't open the link, could you pls share the pbix file by another way?





Did I answer your question? Mark my post as a solution!

Proud to be a Super User!




Please re-open. it's still working. But you can use new link as bellow: https://limewire.com/d/AG8kE#NQX5ngSALO

Helpful resources

Announcements
April Power BI Update Carousel

Power BI Monthly Update - April 2026

Check out the April 2026 Power BI update to learn about new features.

New to Fabric survey Carousel

New to Fabric Survey

If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.

Power BI DataViz World Championships carousel

Power BI DataViz World Championships - June 2026

A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.

FabCon and SQLCon Highlights Carousel

FabCon &SQLCon Highlights

Experience the highlights from FabCon & SQLCon, available live and on-demand starting April 14th.