The simplest way to get better results from Claude + Power BI

When I started building Power BI skills, the hardest decision wasn't the DAX or the JSON. It was something that sounds trivial: how should you tell a skill which visual to work on?

If you're using Claude — or any AI agent — on your Power BI reports, here's the single change that gets you better results faster than almost anything else: tell it the object ID, not the name.

It sounds trivial. It's actually the difference between a tool that feels reliable and one that feels flaky. When I was building my own Power BI skills, the hardest decision wasn't the DAX or the JSON — it was exactly this: how do you tell the tool which visual to work on? I tested several approaches before landing on the one that holds up. The winner is boring in the best way: pass the object ID.

The obvious answer — and why it breaks

The intuitive way to point at a visual is by its name: "the Revenue by Region chart." Humans do this all the time. So why not let the skill take a name?

Because names are quietly treacherous:

  • They're not unique. Two charts can carry the same title. Plenty of visuals have no title at all. "The KPI card" is meaningless when there are nine of them.

  • They change. Someone edits a title for a design tweak and every name-based instruction silently points at nothing.

  • They force a search. A name isn't a location — it's a description. To act on "the Revenue chart," the tool first has to go hunting: scan the page, read each visual, match the text, and then hope exactly one matched. Zero matches and it fails; two matches and it has to guess. That hunting is slower, and "guess" is exactly the word you don't want anywhere near your production report.

A name is a description of a house: "the one with the blue door." Sometimes it works. Sometimes two houses have blue doors, or someone repaints, and you knock on the wrong one.

The answer that wins — the object ID

Every page and every visual in a Power BI report has a unique object ID — a stable identifier like 63063b830db4300c0421. It doesn't change when you rename a title. It's never ambiguous. And in the modern report format (PBIR), that ID is literally the folder name the visual lives in. So when you hand Claude the ID, you're not describing the visual — you're giving its exact address. No scan, no matching, no guessing. It goes straight to it.

That's the whole case: an ID is an address, a name is a description. For anything a tool will act on, you want the address — every time.

There's a bonus that compounds across a big report: skipping the hunt means the agent doesn't have to read a pile of visuals just to find the right one. Less to read, faster to run, cheaper, and — most importantly — deterministic. Same input, same target, every time.

Getting an ID takes ten seconds

You don't have to dig through files. Power BI hands it to you:

  1. Turn it on onceFile → Options and settings → Report settings → enable "Copy object names when right-clicking on report objects."

  2. Page ID — right-click the page tab → Copy object name.

  3. Visual ID — click the visual, right-click → Copy object name.

One gotcha worth knowing: if a visual sits inside a group, a single click may select the group, not the visual. Make sure you've selected the individual visual before copying — otherwise you'll grab the group's ID instead.

How you actually call it

That's exactly why I built my own skills to expect IDs — you invoke them with the address spelled out:




Hand over the IDs and the skill skips name-matching entirely — unambiguous, fast, repeatable. If you genuinely don't have an ID to hand, a display name still works as a fallback — but it's the fallback, not the default, precisely because the tool then has to go hunting.

And this isn't specific to my skills: whatever you're using Claude for on a Power BI report, the same rule applies — lead with the ID.

The principle underneath

The unglamorous lesson here generalises well beyond Power BI: good tooling removes ambiguity at the input. Every place you let a human describe something instead of identifying it, you've added a chance for the tool to guess wrong. The craft is in designing the interface so there's nothing to guess.

Names are for humans. IDs are for machines. Tell the machine the ID, and it can't misunderstand you.

Pawel