How to display multiple progress bars in a single table cell?

Hi QuickSight community,

I have a table with three separate columns showing percentage values (Fast_Charging_Percent, Normal_Charging_Percent, Slow_Charging_Percent). Each column currently has Data Bars applied.

What I want to achieve:
Combine these three columns into a single column that displays all three values with their respective progress bars.

What I’ve tried:
I created a calculated field using concat() and ifelse() to simulate progress bars with emoji characters (:blue_square::green_square::orange_square::white_large_square:). This works but has limitations:

  • Not as clean as native Data Bars
  • Hits SPICE complexity limits when trying to add more granularity (8+ blocks)
  • Emoji rendering can be inconsistent

My questions:

  1. Is there a way to merge multiple Data Bar columns into a single column in a table visual?
  2. Is there a better approach to display multiple progress indicators within a single table cell?

Any suggestions or workarounds would be greatly appreciated!

Thanks in advance!

This is my current calculated field:

concat(
  'ConCon1 ',
  ifelse({Fast_Charging_Percent} >= 17, '🟦', '⬜'),
  ifelse({Fast_Charging_Percent} >= 33, '🟦', '⬜'),
  ifelse({Fast_Charging_Percent} >= 50, '🟦', '⬜'),
  ifelse({Fast_Charging_Percent} >= 67, '🟦', '⬜'),
  ifelse({Fast_Charging_Percent} >= 83, '🟦', '⬜'),
  ' ', toString(round({Fast_Charging_Percent}, 1)), '%
',  
  'ConCon2 ',
  ifelse({Normal_Charging_Percent} >= 17, '🟩', '⬜'),
  ifelse({Normal_Charging_Percent} >= 33, '🟩', '⬜'),
  ifelse({Normal_Charging_Percent} >= 50, '🟩', '⬜'),
  ifelse({Normal_Charging_Percent} >= 67, '🟩', '⬜'),
  ifelse({Normal_Charging_Percent} >= 83, '🟩', '⬜'),
  ' ', toString(round({Normal_Charging_Percent}, 1)), '%
',
  'ConCon3 ',
  ifelse({Slow_Charging_Percent} >= 17, '🟧', '⬜'),
  ifelse({Slow_Charging_Percent} >= 33, '🟧', '⬜'),
  ifelse({Slow_Charging_Percent} >= 50, '🟧', '⬜'),
  ifelse({Slow_Charging_Percent} >= 67, '🟧', '⬜'),
  ifelse({Slow_Charging_Percent} >= 83, '🟧', '⬜'),
  ' ', toString(round({Slow_Charging_Percent}, 1)), '%'
)

Hi @hyyitss , did you consider using data bars?

Hi @Hrolol

Thanks for your reply!

I have already considered and tried using Data Bars, as shown in my screenshot. However, what
I’m looking for is to merge these three columns into a single column (like my test6 column), rather than keeping them as three separate columns.

So I’m wondering if there’s a better native solution I might be missing.

Oh, I see. I see 2 possible options:

  1. splitting a row into 3 ones
  2. using a Pivot.

In the second case you can keep the left part as is and transform these 3 bars into 3 rows. But i did not use bars in pivot visuals so I am not sure that it will do work for you because max value will probably be the same for all 3 metrics. This concern is actual for the first case as well. I wish Data Bars gave us gave us the same level of control as Conditional Formatting.

Hi @hyyitss,

Just checking back in since we haven’t heard from you in a bit. I wanted to see if the guidance shared earlier helped resolve your question, or if you found a solution in the meantime.

If you still have any additional questions related to your initial post, feel free to share them. Otherwise, any update you’re able to provide within the next 3 business days would be helpful for the community.

Thank you