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

Grow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.

Reply
FunnyPanda
New Member

Binary Search for Power Query | List.Contains alternative

Hi there!

I've been struggling with validation that I needed to perform on some data and I hope this might help someone.
Problem: check if a large non sequential list contains some number with the expected outcome being true or false.


YouTube suggested me this video where they talk about what is Binary Search and I tried it and to my amusement it worked.
The previous query ran for 4 hours and by implementing this instead of List.Contains, the run time reduced to 1h25minutes!

As they say on the video, the list must be sorted in a ascending order.

 

 

let
    f=
        (_list as list, _x as any, _t as number, _b as number) as logical =>
            if _t>_b then false else
            let
                _m = Number.Round((_t+_b)/2,0)
            in 
                if _x<_list{_m} then @f(_list, _x, _t, _m-1) else
                if _x>_list{_m} then @f(_list, _x, _m+1, _b) else
                true
in
    f

 

 

 

I also did a limited test with text and it seemed to work.

2 REPLIES 2
lbendlin
Super User
Super User

How long does it run when you use List.Buffer ?

It ran with the list buffered.
I didn't run any tests with an unbuffered list.

Helpful resources

Announcements
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

MayPowerBICarousel

Power BI Monthly Update - May 2024

Check out the May 2024 Power BI update to learn about new features.

Top Solution Authors
Top Kudoed Authors