Join us for an expert-led overview of the tools and concepts you'll need to pass exam PL-300. The first session starts on June 11th. See you there!
Get registeredPower BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. Register now.
Hello!
I have a column I am trying to split into 6 columns based on position, since there are repeating instances of some delimiters, the instance number isn't always the same, and some are missing. I was able to determine the positions for splitting, now in 4 columns, but can't get them into a list to use Splitter.SplitTextByPosition.
The source data is publicy posted. I attempted to split by line break, carriage return and tab as in this article, with no luck.
Source Data Example
Provider Name, City, State, Zip | Speciality | Credential | License | NPI | Accred Level | F=Full L=Limited | Eff. Date | Exp. Date | |
Abbe, Hannah Mountain View Pain Center 63 N Quebec St Ste 300 Denver,CO 80230 (720) 749-5599 | Pain Management | PA | PA7909 | 1083360184 | 1 | 4/27/2024 | 7/31/2027 | ||
Abbott, Timothy W Mountain View Pain Center 15901 E Briarwood Cir, #150 Aurora,CO 80916 (720) 749-5599 | Pain Management | PA | PA2923 | 1023152212 | 1 | 12/19/2024 | 7/31/2027 | ||
Abercrombie, Chad E Alliance Health Partners 3920 N. Union Blvd, Suite 160 Colorado Springs,CO 80907 (719) 632-4754 | Chiropractics | DC | CHR3773 | 1093917973 | 1 | 11/17/2000 | 7/31/2025 | ||
Abernethy, Kimberly A N/A 10093 W 100Th Pl Westminster,CO 80021 | Family Medicine | DO | DR43875* | 1235210048 | 2 | 6/12/2024 | 1/31/2027 | ||
Abernethy, Kimberly A Concentra Broomfield 290 Nickel Street Broomfield,CO 80020 | Family Medicine | MD | DR43875 | 1235210048 | 1 | 12/10/2023 | 7/31/2026 |
Desired Result
Provider Name | Company | Address | State | Zip | Phone | Speciality | Credential | License | NPI | Accred Level | F=Full L=Limited | Eff. Date | Exp. Date |
Abbe, Hannah | Mountain View Pain Center | 63 N Quebec St Ste 300 Denver,CO 80230 | CO | 80230 | (720) 749-5599 | Pain Management | PA | PA7909 | 1.08E+09 | 1 | 4/27/2024 | 7/31/2027 | |
Abbott, Timothy | W Mountain View Pain Center | 15901 E Briarwood Cir, #150 Aurora,CO 80916 | CO | 80916 | (720) 749-5599 | 720) 749-5599 | PA | PA2923 | 1.02E+09 | 1 | ######## | 7/31/2027 | |
Abercrombie, Chad | E Alliance Health Partners | 3920 N. Union Blvd, Suite 160 Colorado Springs,CO 80907 | CO | 80907 | (719) 632-4754 | Chiropractics | DC | CHR3773 | 1.09E+09 | 1 | ######## | 7/31/2025 | |
Abernethy, Kimberly | A N/A | 10093 W 100Th Pl Westminster,CO 80021 | CO | 80021 | (970) 309-8649 | Family Medicine | DO | DR43875* | 1.24E+09 | 2 | 6/12/2024 | 1/31/2027 | |
Abernethy, Kimberly | A Concentra | 290 Nickel Street Broomfield,CO 80020 | CO | 80020 | (303) 460-9339 | Family Medicine | MD | DR43875 | 1.24E+09 | 1 | ######## | 7/31/2026 |
Current M-Code
let
Source = Excel.CurrentWorkbook(){[Name="dnld"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Provider Name, City, State, Zip", type text}, {"Speciality", type text}, {"Credential", type text}, {"License", type text}, {"NPI", Int64.Type}, {"Accred Level", Int64.Type}, {"F=Full L=Limited", type text}, {"Eff. Date", type date}, {"Exp. Date", type date}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Name Position", each Text.Length(Text.BeforeDelimiter([#"Provider Name, City, State, Zip"]," ",2))),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "Address Position", each Text.PositionOfAny([#"Provider Name, City, State, Zip"],{"0","1","2","3","4","5","6","7","8","9"},0)),
#"Added Custom2" = Table.AddColumn(#"Added Custom1", "State Zip", each Text.PositionOf([#"Provider Name, City, State, Zip"],",",Occurrence.Last)),
#"Added Custom3" = Table.AddColumn(#"Added Custom2", "Phone Position", each Text.PositionOf([#"Provider Name, City, State, Zip"],"(",1))
in
#"Added Custom3"
Thank you!
Solved! Go to Solution.
Add this line to your code to create the list:
#"Added Custom4" = Table.AddColumn(#"Added Custom3", "Splitter List", each Splitter.SplitTextByPositions(
{0} & List.LastN(Record.FieldValues(_),4))([#"Provider Name, City, State, Zip"]))
And, as a suggestion, instead of reading it in as an Excel table, and taking a chance on unwanted transformations caused by Excel, I would read the `csv` file directly:
Source = Csv.Document(File.Contents("full_path_to_file\export.csv"),[Delimiter=",", Columns=9, Encoding=65001, QuoteStyle=QuoteStyle.None]),
#"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
#"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Provider Name, City, State, Zip", type text}, {"Speciality", type text}, {"Credential", type text}, {"License", type text}, {"NPI", Int64.Type}, {"Accred Level", Int64.Type}, {"F=Full L=Limited", type text}, {"Eff. Date", type date}, {"Exp. Date", type date}}),
...
Also, you will need to build in some error checking.
If you are missing a component (eg: phone number; street address, etc) your Position finder will return incorrect results.
Add this line to your code to create the list:
#"Added Custom4" = Table.AddColumn(#"Added Custom3", "Splitter List", each Splitter.SplitTextByPositions(
{0} & List.LastN(Record.FieldValues(_),4))([#"Provider Name, City, State, Zip"]))
And, as a suggestion, instead of reading it in as an Excel table, and taking a chance on unwanted transformations caused by Excel, I would read the `csv` file directly:
Source = Csv.Document(File.Contents("full_path_to_file\export.csv"),[Delimiter=",", Columns=9, Encoding=65001, QuoteStyle=QuoteStyle.None]),
#"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
#"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Provider Name, City, State, Zip", type text}, {"Speciality", type text}, {"Credential", type text}, {"License", type text}, {"NPI", Int64.Type}, {"Accred Level", Int64.Type}, {"F=Full L=Limited", type text}, {"Eff. Date", type date}, {"Exp. Date", type date}}),
...
Also, you will need to build in some error checking.
If you are missing a component (eg: phone number; street address, etc) your Position finder will return incorrect results.
Thank you so much!
This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.
Check out the June 2025 Power BI update to learn about new features.
User | Count |
---|---|
16 | |
10 | |
10 | |
8 | |
7 |