Power BI Dynamic Columns: Show & Hide Without Republishing (2026) | Flexa Intel

Power BI Guide  ·  Updated July 2026  ·  11 min read  ·  Flexa Intel Team

Power BI Dynamic Columns: Show & Hide Without Republishing (2026)

Quick Answer Power BI has four approaches for dynamic columns without republishing: Field Parameters (switch between predefined measures via slicer), Bookmarks (toggle between pre-built layouts), DAX BLANK() trick (hide columns conditionally), and Flexa Tables (the only method that lets users add, remove, and reorder columns themselves in Power BI Service with no developer pre-configuration). Choose based on how much flexibility users need after publishing.
4approaches to dynamic columns in Power BI — each with different trade-offs
#1most common post-publish request from Finance teams: "can you add/remove a column?"
0IT tickets needed to add variance columns with Flexa Tables in the published report

1. Why Dynamic Columns Are Hard in Power BI

Power BI separates two distinct roles: the report author (works in Power BI Desktop, configures visuals, publishes) and the report consumer (works in Power BI Service, views and filters but cannot modify visual configuration). This separation is intentional — it prevents consumers from breaking reports — but it creates friction when business users legitimately need to control which columns appear.

The most common scenario: a Finance team uses a Matrix report with Revenue, COGS, and Gross Profit columns. A CFO asks "can you also show me Headcount?" A BI developer adds the column in Desktop and republishes. Two weeks later, the CFO asks "can you hide Headcount for the board version?" Another Desktop session, another republish. This cycle is the core problem that dynamic column approaches solve.

The republishing cycle caused by locked columns in Power BIA circular diagram showing the cycle: Finance requests new column → Developer opens Desktop → Developer modifies visual → Developer republishes → Finance uses report for a week → Finance requests another change → cycle repeats.Finance requestsnew/removed columnDeveloper opensPower BI DesktopModifies visual,tests, validatesRepublishesto ServiceFinance uses reportfor 1–2 weeksRepeat everyfew weeks
The republishing cycle — every column change requires a Desktop session and republish. Dynamic column approaches break this cycle.

2. Four Approaches — Comparison at a Glance

MethodSetup effortUser can add new columns?Works in Service?DAX required?
Field ParametersMedium — define in DesktopNo — only predefined optionsYes — via slicerNo
Bookmarks + buttonsHigh — build each layoutNo — only preset layoutsYes — via buttonsNo
DAX BLANK() trickMedium — one measure per columnNo — only predefined columnsYes — via slicerYes
Flexa TablesLow — configure onceYes — including new variance columnsYes — full drag and addNo

3. Method 1: Field Parameters

Native Power BI
Field Parameters
Available since Power BI May 2022 update. Must be enabled: File → Options → Preview features → Field parameters.

Field Parameters create a parameter table that lists measures or fields. A slicer connected to the parameter lets users choose which measures appear in a visual. The visual updates dynamically based on the slicer selection — no republish needed once the parameter is set up.

When to use Field Parameters

  • You have a defined set of metrics users need to switch between (Revenue, COGS, Gross Profit, Headcount)
  • The column count won't change — adding a new metric still requires Desktop
  • You want a native solution with no additional cost

Step-by-step: Field Parameters

  1. Enable Field Parameters. File → Options and settings → Options → Preview features → check "Field parameters" → restart Power BI Desktop.
  2. Create the parameter. Modeling tab → New parameter → Fields. In the dialog, name the parameter (e.g. "Column Selector") and add the measures or fields you want users to switch between. Click Create.
  3. Power BI automatically: creates a parameter table, adds a DAX measure for each field, and adds a slicer to the report canvas.
  4. Add the parameter to your visual. In your Matrix or Table visual, drag the parameter's Field value to the Values field well (replacing or alongside your existing measures).
  5. Configure the slicer. The auto-created slicer controls which columns appear. Set it to multi-select so users can show multiple columns simultaneously. Optionally rename slicer items for clarity.
  6. Publish. In Power BI Service, users use the slicer to show/hide columns — no Desktop access needed.
Field Parameters switch between columns — they don't add new ones. If Finance asks for a column that wasn't included in the parameter when it was built, you still need to go back to Desktop. Field Parameters solve "choose which predefined columns to show" but not "add a column I haven't defined yet."

Field Parameters M code (for reference)

// Auto-generated DAX for a Field Parameter named "Column Selector"
Column Selector = {
    ("Revenue", NAMEOF('Sales'[Revenue Measure]), 0),
    ("COGS", NAMEOF('Sales'[COGS Measure]), 1),
    ("Gross Profit", NAMEOF('Sales'[Gross Profit Measure]), 2),
    ("Headcount", NAMEOF('HR'[Headcount Measure]), 3)
}

4. Method 2: Bookmarks with Buttons

Native Power BI
Bookmarks + Buttons
Available in all Power BI versions. Higher setup effort — best for a small number of fixed layouts.

Bookmarks capture the state of a report page — which visuals are visible, which filters are applied, and which slicers are selected. By creating multiple bookmarks (each capturing a different column layout) and linking them to buttons, users can switch between pre-built column configurations with a single click.

When to use Bookmarks

  • You have 2–3 fixed layouts that users toggle between (e.g. "Summary view" vs "Detail view")
  • The layouts are significantly different — not just column visibility but entire visual arrangements
  • You don't want to use Field Parameters for some reason (e.g. the layout changes are too complex for a slicer)

Step-by-step: Bookmarks for column toggle

  1. Build two versions of your visual. Create two Matrix visuals on the same report page — one with the "summary" columns (Revenue, Gross Profit, Net Income) and one with the "detail" columns (Revenue, COGS, Gross Profit, OpEx, EBITDA, Net Income). Overlap them in the same position.
  2. Open the Bookmarks pane. View → Bookmarks → Add.
  3. Create Bookmark 1 (Summary). Show only the summary visual, hide the detail visual. Add a bookmark — name it "Summary View." Right-click the bookmark → update to capture current state.
  4. Create Bookmark 2 (Detail). Show only the detail visual, hide the summary visual. Add another bookmark — name it "Detail View."
  5. Add toggle buttons. Insert → Buttons → Blank. Label one "Summary" and one "Detail." In the button's Action settings, set Type = Bookmark and select the corresponding bookmark.
  6. Publish. Users click the buttons to switch between layouts in Power BI Service.
Use "Selected visuals" bookmarks, not "All visuals." When creating bookmarks for column toggle, right-click each bookmark → Edit → uncheck "Data" and check only "Display" — this ensures the bookmark only captures which visuals are shown/hidden, not the current filter state. Otherwise, switching layouts resets all slicers and filters, which confuses users.

5. Method 3: DAX BLANK() Trick

DAX
DAX BLANK() Conditional Column
Works in Matrix visual. Requires one measure per hideable column. Medium DAX skill required.

When a measure returns BLANK() for all rows in a column, Power BI hides the column header in the Matrix visual. This behavior can be used to make columns appear and disappear based on a What-If parameter slicer — without republishing.

Step-by-step: BLANK() trick

  1. Create a What-If parameter. Modeling → New parameter → Numeric range. Set: Minimum = 0, Maximum = 1, Increment = 1, Default = 1. Name it "Show Headcount." Click OK — Power BI adds a slicer and a measure automatically.
  2. Create a conditional measure. For each column you want to make hideable, create a wrapper measure:
Headcount (Conditional) =
IF(
    [Show Headcount] = 1,
    [Headcount],   -- show the real value
    BLANK()        -- return BLANK to hide the column
)
  1. Replace the original measure in the Matrix with the conditional measure. The column now shows when the parameter = 1 and disappears when parameter = 0.
  2. Format the slicer. Change it to a toggle button style (slicer → Format → Slicer settings → Style → Tile) for a cleaner UI. Label it "Show/Hide Headcount."
  3. Publish. Users toggle the slicer in Power BI Service to show or hide the column. No Desktop needed.
The BLANK() trick has limits. It only works in the Matrix visual — the Table visual does not hide columns when all values are BLANK(). It also requires one measure per hideable column, which multiplies maintenance overhead. For more than 3–4 hideable columns, Field Parameters or Flexa Tables are cleaner solutions.

Multi-column toggle with one parameter

To control multiple columns with a single parameter, use an integer range instead of 0/1:

-- Parameter: "Column View" with values 1 (Summary), 2 (Detail), 3 (Full)

COGS (Conditional) =
IF([Column View] >= 2, [COGS], BLANK())

OpEx (Conditional) =
IF([Column View] >= 2, [OpEx], BLANK())

EBITDA (Conditional) =
IF([Column View] = 3, [EBITDA], BLANK())

6. Method 4: Flexa Tables (Full Self-Service)

Custom Visual
Flexa Tables — AppSource
The only approach that gives users full add/remove/reorder freedom in Power BI Service. $2.99/user/month, Microsoft-certified.

Flexa Tables is fundamentally different from the three native approaches: instead of pre-defining which columns users can choose, it gives users the ability to add, remove, and reorder any column — including variance columns (MoM, YoY, Actual vs Budget, Actual vs Forecast) that don't exist as DAX measures in the data model.

What Flexa Tables lets users do in Power BI Service

  • Show/hide existing columns — click a column header to remove it from the view; click the + button to add it back
  • Add variance columns without DAX — click + column → select MoM, YoY, YTD, Actual vs Budget, Actual vs Forecast → column appears instantly with the calculated variance
  • Reorder columns — drag column headers left or right to change the display order
  • Select comparison periods — choose which two periods to compare for a variance column, directly in the published report
  • Save views — save a custom column configuration so it persists between sessions

Setup: Flexa Tables in Power BI Desktop

  1. Install from AppSource. Insert → More Visuals → AppSource → search "Flexa Tables" → Add. Free trial, no credit card required.
  2. Add to report canvas and resize to full width.
  3. Configure base columns. Drag your row dimension to Rows, your measure(s) to Values, and optionally your date/period dimension to Columns — same as the Matrix visual.
  4. Publish to Power BI Service. Users can now add, remove, and reorder columns themselves. Variance columns (MoM, YoY, etc.) appear as options in the + column menu even if no corresponding DAX measures exist in the model.
The key difference from all native approaches: with Field Parameters, Bookmarks, and the BLANK() trick, a developer must pre-define every column option before publishing. With Flexa Tables, the user is not limited to predefined options — they can add MoM variance for any measure, compare any two periods, or pivot the table by any dimension available in the model. This is the difference between "choose from a menu" and "build what you need." See Flexa Tables →

7. Decision Guide — Which Method to Use

SituationBest method
You have 3–8 predefined metrics and users need to choose which ones to showField Parameters — native, clean slicer UI, no extra cost
You have 2–3 fixed report layouts (Summary / Detail / Full) that users toggle betweenBookmarks + Buttons — best for complete layout changes, not just column visibility
You need to hide specific columns conditionally based on user role or slicer, and your users are comfortable with a toggleDAX BLANK() trick — precise control, works in Matrix, no custom visual needed
Finance/ops users keep requesting new column configurations that weren't predefined, or need variance columns (MoM, YoY, Actual vs Budget) without developer involvementFlexa Tables — only method that handles user-driven column additions in Service
You need both column flexibility AND variance analysis (MoM, YoY) in one visualFlexa Tables — Field Parameters handle column switching but not built-in variance
You're building for a technical audience who won't need ad hoc column changesField Parameters or BLANK() trick — sufficient for controlled environments
Combine methods where appropriate. Use Field Parameters for switching between summary and detail metric sets at the page level, and Flexa Tables for the detailed cross-tab table where Finance needs full variance flexibility. The two approaches work independently on the same report page.

Let Finance add and remove columns themselves — without republishing

Flexa Tables gives users full column control in published Power BI reports — add MoM/YoY/Actual vs Budget columns, reorder fields, save views — no DAX, no Desktop, no IT tickets. Microsoft-certified, $2.99/user/month, free trial on AppSource.

Get Free Trial on AppSource →

FAQ

How do I show and hide columns dynamically in Power BI without republishing?

Four approaches: Field Parameters (switch between predefined measures via slicer), Bookmarks with buttons (toggle between preset layouts), DAX BLANK() trick (hide columns conditionally based on a parameter), and Flexa Tables (the only method that lets users add columns that weren't predefined, including variance columns). Choose based on how much flexibility users need after publishing.

What are Field Parameters in Power BI and how do they work?

Field Parameters create a parameter table containing a list of fields or measures. A slicer connected to the parameter controls which fields appear in a visual. Users select one or more fields from the slicer and the visual updates — no republish needed. Field Parameters must be enabled in Preview features (Options → Preview features → Field parameters) and defined in Desktop before publishing. Enable the preview feature in File → Options → Preview features.

Can users add columns in Power BI Service without going back to Desktop?

Not with native Power BI visuals — Matrix and Table visuals lock their column configuration after publishing. The only way to add new columns in Power BI Service without Desktop is with Flexa Tables from AppSource, which lets users add columns (including MoM, YoY, Actual vs Budget) directly in the published report without DAX or IT involvement.

How do I use the BLANK() trick to hide columns in Power BI?

Create a What-If parameter (0 to 1), then wrap your measure: Column = IF([Show Parameter] = 1, [Original Measure], BLANK()). Use the conditional measure in your Matrix visual. When the parameter slicer is set to 0, the column disappears. This works in published reports without republishing, but each hideable column needs its own wrapper measure, and it only works in the Matrix visual (not Table visual).

Why can't I add columns to a Power BI Table visual after publishing?

Power BI's Table and Matrix visuals are configured in Desktop and locked when published to Power BI Service. Report viewers can filter, sort, and drill but cannot modify field configuration. To give consumers column control, use Field Parameters (switching between predefined options) or Flexa Tables (full add/remove/reorder freedom in Service).

What is the easiest way to let Finance users choose which columns to see in Power BI?

Flexa Tables — install once, publish, and Finance users can show/hide columns, add variance columns (MoM, YoY, Actual vs Budget), and reorder columns themselves in Power BI Service. No ongoing developer involvement. Field Parameters is the best native alternative but requires predefined options and doesn't support adding new variance columns.

FI
Flexa Intel Team Power BI custom visuals for tables, charts, design & analytics. Makers of Flexa Tables — the pivot and variance visual for Power BI.
flexaintel.com
Related guides — Power BI table visuals
facebooklinkedintwittermail