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

Calling all Data Engineers! Fabric Data Engineer (Exam DP-700) live sessions are back! Starting October 16th. Sign up.

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]
)

Share with Power BI Enthusiasts: 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]
)

Share with Power BI Enthusiasts: 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
FabCon Global Hackathon Carousel

FabCon Global Hackathon

Join the Fabric FabCon Global Hackathon—running virtually through Nov 3. Open to all skill levels. $10,000 in prizes!

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.