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

Be one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now

Reply
lchirag
Frequent Visitor

Extract Alphanumeric Pattern from Text Field

Hi There!

I have a column in the PBI dataset that is TEXT and has very long text data.

Every row of this field has an Alphanumeric string added in any part of the text. However, the pattern to be extracted is always starting with ABCD0123456. 

How do I search the entire text field and extract this patterned data?

Thank you in anticipation for helping me out!

1 ACCEPTED SOLUTION

Hi @lchirag 

 

You can give this custom lookupFunction a go:

 

let
    Source = "Purchase dept ID: PURT0001894 Software License Renewals Warehouse Area: Applications Hosting Team INITIATIVE/CATEGORY: MS Teams License renewal",
    lookupFunction = ( lookIn as text, alphaCount as number, numberCount as number ) as text =>
        [
            len = alphaCount + numberCount,
            items = List.Select( Text.Split(lookIn, " "), each Text.Length(_) = len),
            find = List.Select( items, each 
                [
                    split = Splitter.SplitTextByCharacterTransition({"A".."Z"}, {"0".."9"})(_),
                    test = Text.Length( split{0} ) = alphaCount and Text.Length( split{1} ) = numberCount
                ][test]
            ),
            combi = Text.Combine( find, ", ")
        ][combi],
    result = lookupFunction(Source, 4, 7)
in
    result

 

 

 

or maybe this

 

let
    Source = "Purchase dept ID: PURT0001894 Software License Renewals Warehouse Area: Applications Hosting Team INITIATIVE/CATEGORY: MS Teams License renewal",
    lookupFunction = (lookIn as text, alphaCount as number, numberCount as number) as text =>
        let
            patternLen = alphaCount + numberCount,
            isPatternMatch = (text) => 
                ( Text.Remove(Text.Start(text, alphaCount), {"A".."Z"}) = "" and
                  Text.Remove(Text.End(text, numberCount), {"0".."9"}) = "" ),
            items = List.Select(Text.Split(lookIn, " "), each Text.Length(_) = patternLen),
            matches = List.Select(items, each isPatternMatch(_))
        in  
            Text.Combine(matches, ", "),
    Result = lookupFunction(Source, 4, 7)
in
    Result

 

 

both return this result

m_dekorte_0-1698865021107.png

 

I hope this is helplful

View solution in original post

3 REPLIES 3
BA_Pete
Super User
Super User

Hi @lchirag ,

 

Going to need some example data and expected outputs please.

 

Pete



Now accepting Kudos! If my post helped you, why not give it a thumbs-up?

Proud to be a Datanaut!




Purchase dept ID: PURT0001894 Software License Renewals Warehouse Area: Applications Hosting Team INITIATIVE/CATEGORY: MS Teams License renewal This is an example of what kind of text field I have, need code to search for "PURT0001894" it can be either in the beginning, middle or end of the text field. But it can only be once. Please help.

Hi @lchirag 

 

You can give this custom lookupFunction a go:

 

let
    Source = "Purchase dept ID: PURT0001894 Software License Renewals Warehouse Area: Applications Hosting Team INITIATIVE/CATEGORY: MS Teams License renewal",
    lookupFunction = ( lookIn as text, alphaCount as number, numberCount as number ) as text =>
        [
            len = alphaCount + numberCount,
            items = List.Select( Text.Split(lookIn, " "), each Text.Length(_) = len),
            find = List.Select( items, each 
                [
                    split = Splitter.SplitTextByCharacterTransition({"A".."Z"}, {"0".."9"})(_),
                    test = Text.Length( split{0} ) = alphaCount and Text.Length( split{1} ) = numberCount
                ][test]
            ),
            combi = Text.Combine( find, ", ")
        ][combi],
    result = lookupFunction(Source, 4, 7)
in
    result

 

 

 

or maybe this

 

let
    Source = "Purchase dept ID: PURT0001894 Software License Renewals Warehouse Area: Applications Hosting Team INITIATIVE/CATEGORY: MS Teams License renewal",
    lookupFunction = (lookIn as text, alphaCount as number, numberCount as number) as text =>
        let
            patternLen = alphaCount + numberCount,
            isPatternMatch = (text) => 
                ( Text.Remove(Text.Start(text, alphaCount), {"A".."Z"}) = "" and
                  Text.Remove(Text.End(text, numberCount), {"0".."9"}) = "" ),
            items = List.Select(Text.Split(lookIn, " "), each Text.Length(_) = patternLen),
            matches = List.Select(items, each isPatternMatch(_))
        in  
            Text.Combine(matches, ", "),
    Result = lookupFunction(Source, 4, 7)
in
    Result

 

 

both return this result

m_dekorte_0-1698865021107.png

 

I hope this is helplful

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!

Dec Fabric Community Survey

We want your feedback!

Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.

ArunFabCon

Microsoft Fabric Community Conference 2025

Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.

December 2024

A Year in Review - December 2024

Find out what content was popular in the Fabric community during 2024.