Reply
Julia1234
Helper I
Helper I
Partially syndicated - Outbound

Filtering DirectQuery table based on import mode table - visuals

I have DirectQuery table [VendorTransaction](Vendor,Invoice,Amt) and 2 import tables: ExcludeVendor(Vendor) and ExcludeInvoice(Invoice).
I would need to exclude records in DirectQuery table [VendorTransaction](Vendor,Invoice,Amt) that exist as Vendor in ExcludeVendor and Invoice in ExcludeInvoice. I tried to use this measure, it worked on Visual with granularity similar to [VendorTransaction](Vendor,Invoice,Amt) but return different result (Amt) on Visuals with different granularity (Vendor or Total Amount). Are there any other ways to filter/exclude? I cannot use merge as as [VendorTransaction] is Direct Query table.

ExcludeVendorExcel = COUNTROWS(
        FILTER(
            VendorTransaction,
           NOT VendorTransaction[Vendor] IN VALUES(VendorExclusion[Vendor])
        ))

Thank you!

1 ACCEPTED SOLUTION

Syndicated - Outbound
ExcludeVendorExcel = 
CALCULATE (
    SUM ( VendorTransactionMeasure[Amount] ),
    KEEPFILTERS (
        NOT VendorTransaction[Vendor] IN VALUES ( ExcludeVendor[Vendor] )
        && NOT VendorTransaction[Invoice] IN VALUES ( ExcludeInvoice[Invoice] )
    )
)

seems to work.

View solution in original post

10 REPLIES 10
johnt75
Super User
Super User

Syndicated - Outbound

You could try

ExcludeVendorExcel =
CALCULATE (
    COUNTROWS ( VendorTransaction ),
    KEEPFILTERS (
        NOT VendorTransaction[Vendor] IN VALUES ( VendorExclusion[Vendor] )
    )
)

Syndicated - Outbound

Thank you @johnt75 , I tried this logic on visuals with different granularity  and, unfortunatelly,  this filter  returned different result for Amount.

Syndicated - Outbound
ExcludeVendorExcel = 
CALCULATE (
    SUM ( VendorTransactionMeasure[Amount] ),
    KEEPFILTERS (
        NOT VendorTransaction[Vendor] IN VALUES ( ExcludeVendor[Vendor] )
        && NOT VendorTransaction[Invoice] IN VALUES ( ExcludeInvoice[Invoice] )
    )
)

seems to work.

Syndicated - Outbound

Thank you @johnt75 for the details, this measure works.

FarhanJeelani
Super User
Super User

Syndicated - Outbound

Hi @Julia1234 ,

 

When working with a DirectQuery table and attempting to filter it using imported tables, the challenge lies in ensuring consistent results across visuals with different granularities. Since merging is not an option with DirectQuery, here’s an alternative approach using DAX measures and relationships.

Create Filtering Logic with Measures:

Use measures to dynamically exclude rows from the VendorTransaction table based on ExcludeVendor and ExcludeInvoice.

Here’s how:

Measure: Exclude Rows

ExcludeFilter = 
IF (
    NOT (
        VendorTransaction[Vendor] IN VALUES ( ExcludeVendor[Vendor] )
        || VendorTransaction[Invoice] IN VALUES ( ExcludeInvoice[Invoice] )
    ),
    1,
    0
)

Measure: Filtered Amount

FilteredAmt = 
CALCULATE (
    SUM ( VendorTransaction[Amt] ),
    FILTER ( VendorTransaction, [ExcludeFilter] = 1 )fUse FilteredAmt in your visuals instead of Amt. This will ensure that only rows not excluded by ExcludeVendor and ExcludeInvoice are considered, regardless of the visual’s granularity. 

 

Alternative Approach: Use Composite Models

If your DirectQuery source allows, you can enable a Composite Model. This would let you create relationships between VendorTransaction and the imported tables (ExcludeVendor and ExcludeInvoice) directly in Power BI.

Steps:

  1. Ensure relationships between:
    • VendorTransaction[Vendor] and ExcludeVendor[Vendor]
    • VendorTransaction[Invoice] and ExcludeInvoice[Invoice]
  2. Use a calculated column in the VendorTransaction table to filter rows:
    IsExcluded = 
    IF (
        VendorTransaction[Vendor] IN VALUES ( ExcludeVendor[Vendor] )
        || VendorTransaction[Invoice] IN VALUES ( ExcludeInvoice[Invoice] ),
        TRUE,
        FALSE
    )
  3. Create a measure to sum only non-excluded rows:
    FilteredAmt = 
    CALCULATE (
        SUM ( VendorTransaction[Amt] ),
        VendorTransaction[IsExcluded] = FALSE
    )

Syndicated - Outbound

Hi @FarhanJeelani Thank you for your ideas!
I tried creating this measure, but got error: A single value for column 'Vendor' in table 'VendorTransaction' cannot be determined. This can happen when a measure formula refers to a column that contains many values without specifying an aggregation such as min, max, count, or sum to get a single result.

 

Should an aggregate function be added?

 

 

ExcludeFilter = 
IF (
    NOT (
        VendorTransaction[Vendor] IN VALUES ( ExcludeVendor[Vendor] )
        || VendorTransaction[Invoice] IN VALUES ( ExcludeInvoice[Invoice] )
    ),
    1,
    0
)

 

 

 

Syndicated - Outbound

Hi,

Please share some sample data to work with and show the expected result.  Share data in a format that can be pasted in an MS Excel file.


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

Syndicated - Outbound

Hi @Ashish_Mathur  Thank you for responding,

Direct Tables (not db tables but from model.bim) . VendorTransaction related to VendorTransactionMeasure by ID.
Excpected result: 1000 = 400+ 600
IDs 1,2,3,5 excluded, IDs 4 and 6 included into Amount calculation
1.Direct Tables

VendorTransaction

Vendor Invoice   ID
V123INV456    1
V124INV457    2
V125INV458    3
V125INV459    4
V127INV460    5
V127INV461    6

 

VendorTransactionMeasure

IDAmount
1100
2200
3300
4400
5500
6600

 

2.Import Tables
ExcludeVendor

Vendor
V123
V124

 

ExcludeInvoice

Invoice
INV458
INV460

So basically, the report uses existing tabular model.bim with direct connection, and exclusion list is needed on top to exclude Vendors and Invoices from VendorTransactions and VendorTransactions.

Thank you!

Syndicated - Outbound

Hi,

Are you allowed to create calculated column formulas?


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/

Syndicated - Outbound

No, as the report is based on tabular model tables with direct query and I am trying to put exclusion list (import mode) on top. It is not possible to create calculated column based on a columns from the model.

avatar user

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

FebPBI_Carousel

Power BI Monthly Update - February 2025

Check out the February 2025 Power BI update to learn about new features.

Feb2025 NL Carousel

Fabric Community Update - February 2025

Find out what's new and trending in the Fabric community.

Top Solution Authors (Last Month)
Top Kudoed Authors (Last Month)