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

Get inspired! Check out the entries from the Power BI DataViz World Championships preliminary rounds and give kudos to your favorites. View the vizzies.

Reply
Anonymous
Not applicable

Create unique ID from transaction number if no ID exists

I'm trying to migrate some manual customer data and having issues with blank Unique ID fields. Thanks in advance for any help on how to create this column

 

Some of my rows have a unique ID and some don't. I need to allocate Unique IDs in a new column called UniqueID to all the rows but it's a bit complicated.

Is it somehow possible to do the following in this order?

  • If oldID is not blank and is unique, use oldID
  • else if transactionNumber is not blank use transaction number + instance # of transaction (eg 3rd row containing 5555 will get the id 555503)
  • else prefix the column with E and assign it an incremented unique number

 

EG: 

oldIDTransactionNumberNameUniqueID
 11653Alice1165300
2411654Mark24
 11654Kate1165401
2511655Anne25
611656Peter6
2411657Terence1165701
 11658Andrew1165800
 11658Toby1165801
 11658Laura1165802
  SamanthaE000001
  SarahE000002
  KateE000003

 

1 ACCEPTED SOLUTION
amitchandak
Super User
Super User

@Anonymous ,

 

Add and index column - https://stackoverflow.com/questions/45715963/creating-an-index-column-for-power-bi

 

and create new columns like


rank = "E" & format(rankx(filter(Table, isblank([TransactionNumber]) && isblank([OldID])),[Index],,asc), "00000")

 

UniqueID=

Switch =( True(),
isblank([OldID]) && isblank([TransactionNumber]) , [Rank],
isblank([OldID]) , [TransactionNumber],
[OldID]
)

Full Power BI Video 20 Hours YouTube
Microsoft Fabric Series 60+ Videos YouTube
Microsoft Fabric Hindi End to End YouTube

View solution in original post

3 REPLIES 3
amitchandak
Super User
Super User

@Anonymous ,

 

Add and index column - https://stackoverflow.com/questions/45715963/creating-an-index-column-for-power-bi

 

and create new columns like


rank = "E" & format(rankx(filter(Table, isblank([TransactionNumber]) && isblank([OldID])),[Index],,asc), "00000")

 

UniqueID=

Switch =( True(),
isblank([OldID]) && isblank([TransactionNumber]) , [Rank],
isblank([OldID]) , [TransactionNumber],
[OldID]
)

Full Power BI Video 20 Hours YouTube
Microsoft Fabric Series 60+ Videos YouTube
Microsoft Fabric Hindi End to End YouTube
Anonymous
Not applicable

This looks really promising but it's still doubling up some of my values where the old transaction number exists across multiple records. 

 

Any idea how to add the occurence number to each transaction #? (so first transaction lableled 0400 gets labelled 040001 then 040002 etc)

Anonymous
Not applicable

OK so that woked bout I had to make the random number column go up to 10,000 before it worked properly. To be honest I still don't really understand how this column works but at least it did the job, thanks!

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 FABINSIDER for a $400 discount!

FebPBI_Carousel

Power BI Monthly Update - February 2025

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

March2025 Carousel

Fabric Community Update - March 2025

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

Top Solution Authors
Top Kudoed Authors