Agent skill

Bi Measure Builder

by OneWave-AI in OneWave-AI/claude-skills

Writes, explains, debugs, and optimizes BI calculations - Power BI / Fabric DAX measures and calculated columns, Tableau calculated fields (FIXED/INCLUDE/EXCLUDE LOD expressions, table…

MITAuto-check passedData & Analytics

Install Bi Measure Builder

skills CLI
$ npx skills add OneWave-AI/claude-skills --skill bi-measure-builder -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install OneWave-AI/claude-skills bi-measure-builder --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/OneWave-AI/claude-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/bi-measure-builder .claude/skills/bi-measure-builder && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
bi-measure-builder
GitHub stars
336
Token cost
~2.2k tokens
SKILL.md length
1,067 words
Files
26 (incl. scripts, references)
Skills in repo
69
Repo updated
First seen
Licence
MIT

At a glance

Writes, explains, debugs, and optimizes BI calculations - Power BI / Fabric DAX measures and calculated columns, Tableau calculated fields (FIXED/INCLUDE/EXCLUDE LOD expressions, table…

  • Works in 7 steps: Pin down the model before writing… → Name the platform and version features.… → State the evaluation context in one or… → …
  • The request involves DAX
  • SKILL.md covers Workflow, References (load only the one…, Top traps and the fix for each and Verification script, plus 1 more section
  • Runs Python scripts from its folder; calls python

What it does

Bi Measure Builder is an agent skill from OneWave-AI/claude-skills. Writes, explains, debugs, and optimizes BI calculations - Power BI / Fabric DAX measures and calculated columns, Tableau calculated fields (FIXED/INCLUDE/EXCLUDE LOD expressions, table calculations), and Looker LookML measures, dimensions, and derived tables. Use it whenever the request involves DAX, CALCULATE, a Power BI measure, a Tableau calc or LOD, LookML, or a business metric such as YoY, YTD, rolling 12 months, running total, percent of total, distinct customers, ranking, new vs returning customers…

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 31 other files, including scripts and reference files (for example `examples/worked-example.md`, `examples/yoy_spec.json` and `references/dax.md`).

It sits in Data & Analytics. It works with Tableau and Power BI. The repository describes itself as: 200+ production-ready Claude Code skills for sales, marketing, design, engineering, and AI agent architecture. Built and maintained by OneWave AI. The licence is MIT.

When your agent uses it

  • The request involves DAX
  • A Power BI measure
  • A business metric such as YoY
  • Rolling 12 months

Example prompts

  • “shows the wrong total”
  • “is blank”
  • “ignores my slicer/filter”
  • “/bi-measure-builder”

Requirements

  • Python 3

Workflow steps

7 steps, taken from the first numbered list in SKILL.md.

  1. Pin down the model before writing anything. Get (or state as an explicit assumption): the fact table and its grain (one row per order…
  2. Name the platform and version features. DAX: classic vs calendar-based time intelligence (preview), marked date table or not. Tableau…
  3. State the evaluation context in one or two sentences for a typical visual cell and for the grand total. Example: "Row = Month; filters =…
  4. Write the calculation from the matching pattern in the reference file. Use variables (DAX VAR) for readability and to evaluate each…
  5. Explain it line by line in terms of context: what each filter argument adds, removes, or overrides; where context transition happens…
  6. Give a hand-computable test: a 5-10 row sample, the visual layout, and the expected value for each row and the total. Generate or confirm…
  7. Performance notes only where they matter: iterator size, context transition inside large iterators, table filters vs column filters…

What it can do on your machine

Read from SKILL.md and the folder at commit fc5b785. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Python, from the files we listed), which the agent can run.

    Shell commands in SKILL.md call:

    • python

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Bi Measure Builder loads about 2.2k tokens when it runs, and up to ~9.1k if it reads all its reference files. Until then it costs about 238 tokens; SKILL.md has 1,067 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~238
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~9.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from OneWave-AI/claude-skills at commit fc5b785, republished under its MIT licence (© OneWave-AI). 1,067 words, ~2,200 tokens.

Download SKILL.mdSave it as .claude/skills/bi-measure-builder/SKILL.md (or your agent's skills folder). This skill also uses 25 other files; get the full folder from GitHub.
name
bi-measure-builder
description
Writes, explains, debugs, and optimizes BI calculations - Power BI / Fabric DAX measures and calculated columns, Tableau calculated fields (FIXED/INCLUDE/EXCLUDE LOD expressions, table calculations), and Looker LookML measures, dimensions, and derived tables. Use it whenever the request involves DAX, CALCULATE, a Power BI measure, a Tableau calc or LOD, LookML, or a business metric such as YoY, YTD, rolling 12 months, running total, percent of total, distinct customers, ranking, new vs returning customers, closing balances, or basket analysis. Use it especially when someone says a measure "shows the wrong total", "is blank", "ignores my slicer/filter", "repeats the same value on every row", or "is slow" - those are filter context, context transition, LOD order-of-operations, or fanout bugs this skill is built to diagnose. Produces the formula, the context it evaluates in, and a hand-checkable test with expected numbers.

BI Measure Builder

Most wrong BI numbers are not syntax errors. They are the right formula evaluated in the wrong context. Work context-first, and prove every measure against numbers computed independently.

Workflow

  1. Pin down the model before writing anything. Get (or state as an explicit assumption): the fact table and its grain (one row per order line? per snapshot?), dimension tables, relationship keys and direction, and the date table. Ask only for what changes the formula; otherwise state the assumption and proceed. Why: the same YoY formula is right on a star schema and wrong on a flat table with a text date.
  2. Name the platform and version features. DAX: classic vs calendar-based time intelligence (preview), marked date table or not. Tableau: live vs extract, context filters in use. Looker: dialect (window-function support, period_over_period support).
  3. State the evaluation context in one or two sentences for a typical visual cell and for the grand total. Example: "Row = Month; filters = Region slicer; total = all months in the slicer range, recomputed, not summed." Why: this is where most bugs live, and saying it forces the check.
  4. Write the calculation from the matching pattern in the reference file. Use variables (DAX VAR) for readability and to evaluate each sub-expression once.
  5. Explain it line by line in terms of context: what each filter argument adds, removes, or overrides; where context transition happens; which Tableau pipeline step each part runs in; which part Looker runs in SQL vs after the query.
  6. Give a hand-computable test: a 5-10 row sample, the visual layout, and the expected value for each row and the total. Generate or confirm the numbers with scripts/measure_check.py (below) rather than mental arithmetic.
  7. Performance notes only where they matter: iterator size, context transition inside large iterators, table filters vs column filters, bidirectional relationships, LOD on high-cardinality dimensions, PDT persistence.

References (load only the one needed)

  • references/dax.md - DAX semantics recap plus patterns: YoY, YTD/fiscal YTD, rolling N, running total, % of total/parent, distinct count, ranking, new vs returning, semi-additive balances, basket.
  • references/tableau.md - order of operations, LOD vs table calc choice, the same pattern set.
  • references/looker.md - measure types, symmetric aggregates and fanout, post-SQL measure limits, period_over_period, derived tables, the same pattern set.
  • examples/worked-example.md - a full run: "YoY % total is wrong" diagnosed, fixed in all three tools, verified with the script.

Top traps and the fix for each

TrapSymptomFix
CALCULATE boolean filter replaces the existing filter on that column"Blue sales" shows the same number on every color rowWrap in KEEPFILTERS(...) to intersect instead of overwrite, when the intent is "within the current selection"
Filtering a whole table in CALCULATE (FILTER(Sales, ...))Wrong numbers via expanded-table intersection; very slowFilter columns: KEEPFILTERS(Sales[Qty] * Sales[Price] >= 500)
Context transition surpriseMeasure referenced inside SUMX/FILTER/calculated column gives per-row results or double counts duplicate rowsKnow that a measure reference is an implicit CALCULATE; iterate a unique key (VALUES(Table[Key])), not a table with duplicate rows
Aggregator where an iterator is neededSUM(Sales[Qty]) * SUM(Sales[Price]) is wrongSUMX(Sales, Sales[Qty] * Sales[Price])
Non-additive total "fixed" by summingDistinct count or % total "doesn't add up"Usually correct as-is. Only if the business wants a visual total: SUMX(VALUES(dim[key]), [Measure])
Time intelligence without a proper date tableBlank or wrong YoY/YTD, errors on gapsClassic DAX: contiguous date table marked as date table, relationship from it to the fact. Calendar-based: define a calendar. Never use the fact's own date column
BLANK vs 0Visual explodes to every customer; = 0 tests misfireReturn BLANK when there is nothing meaningful (DIVIDE without the 3rd arg); test with ISBLANK or ==, since BLANK() = 0 is TRUE
Bidirectional relationships as a shortcutAmbiguity, slow, confusing slicersSingle-direction model; enable CROSSFILTER(..., BOTH) inside the one measure that needs it
Tableau FIXED ignores the dimension filterLOD total unchanged when user filtersFIXED runs before dimension filters: add the filter to context, or use INCLUDE/EXCLUDE (run after dimension filters)
Tableau table calc sees only what is in the viewYoY blank for first year, rolling window truncated after filteringFilter with a table-calc filter (runs after the calc) instead of a dimension filter; densify missing dates
Tableau total vs COUNTD / averagesGrand total differs from the row sum"Automatic" totals re-aggregate underlying data (usually right); "Total Using: Sum" sums what is visible
Looker fanout on one-to-many joinsSums inflated after adding a joined viewSet primary_key: yes on every view and a correct relationship:; Looker then applies symmetric aggregates. For denormalized tables use sum_distinct + sql_distinct_key
Looker post-SQL measuresrunning_total / percent_of_total wrong, null, or unfilterableThey compute after the query on returned rows only: row limits break them, they cannot be filtered or referenced by other measures. Move logic to SQL (derived table + window function) when it must be exact
Looker filters: on type: numberFilter silently not appliedPut filters: on the component sum/count measures, then combine them in the type: number measure
Show full SKILL.md (253 more words)Show less

Verification script

scripts/measure_check.py is an independent oracle (pandas). Give it the user's sample CSV and a JSON spec; it prints the expected value for every visual row and for the total, evaluated the way BI tools do (total recomputed in its own context, time calcs reading outside the slicer range, empty = BLANK). With --actual it diffs against what the tool shows and exits 1 on mismatch.

bash
python scripts/measure_check.py --data sample.csv --spec spec.json [--actual tool_output.csv] [--json]

Spec fields: calc (sum, count_rows, distinct_count, prior_year, yoy_delta, yoy_pct, ytd, running_total, rolling, new_customers, returning_customers, last_balance, pct_of_total, rank), date_column, value_column, key_column (customer/entity/distinct key), group_column (for pct/rank), grain (day|month|quarter|year), range ({start, end} = report date filter), filters ({column: [values]}), params (window, fiscal_year_start_month, ties: skip|dense, order, mode: per_entity|global_last_date). Examples of every calc: tests/specs/. Self-test: python tests/test_measure_check.py.

When the user has no sample, build a 5-10 row one that exercises the edge that matters (a missing month, a customer with no prior purchase, an entity without an end-of-month snapshot) and show it.

Output format

Return, in this order:

  1. Assumptions - model, grain, relationships, date table (bullets, only what matters).
  2. Evaluation context - one sentence for a row, one for the total.
  3. The code - one fenced block per tool requested, named measures, formatted.
  4. How it works - short, context-focused explanation.
  5. Test - sample table, expected results table (rows + total), and the spec used if the script was run.
  6. Gotchas / performance - only the ones relevant to this model.

When debugging an existing measure, lead with the one-line root cause, then the corrected code, then the test that shows old vs new values.

© OneWave-AI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 25 other files (scripts, references) in bi-measure-builder of OneWave-AI/claude-skills.

  • SKILL.md
  • examples/actual_yoy_fixed.csv
  • examples/actual_yoy_from_tool.csv
  • examples/worked-example.md
  • examples/yoy_spec.json
  • references/dax.md
  • references/looker.md
  • references/tableau.md
  • scripts/measure_check.py
  • tests/fixtures/balances.csv
  • tests/fixtures/sales.csv
  • tests/specs/balance_global_last.json
  • tests/specs/balance_per_entity.json
  • tests/specs/distinct_customers.json
  • tests/specs/new_customers.json
  • … and 11 more

Open the folder on GitHubat commit fc5b785

Compare with similar skills

Bi Measure Builder next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Bi Measure Builder compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Bi Measure Builder this skillOneWave-AI/claude-skills336—~2.2kAutomated safety check: PassMIT
Chart Selectorrevfactory/harness-1001.3k—~1.1kAutomated safety check: PassApache-2.0
Power Bi AI ReadinessDKH-DK/Self-Service-Power-BI-Fabric113—~2kAutomated safety check: PassNone
Pbi Report Builderlukasreese/powerbi-claude-skills129—~7.5kAutomated safety check: PassNone
Pbi Docxperiun/skills-xperiun-free116—~3kAutomated safety check: PassMIT
Pbip Dependency Analyzerlukasreese/powerbi-claude-skills129—~3.2kAutomated safety check: PassNone

Similar skills

  • Chart Selector

    revfactory/harness-100

    Methodology for selecting optimal chart types based on data type and analysis purpose.

    1.3k GitHub stars~1.1k tokensUpdated 6 mo ago
    Data & AnalyticsAuto-check passed
  • Power Bi AI Readiness

    DKH-DK/Self-Service-Power-BI-Fabric

    Score and prepare Power BI semantic models for AI (Fabric Data Agent / Copilot).

    113 GitHub stars~2k tokensUpdated 3 mo ago
    Data & AnalyticsAuto-check passed
  • Pbi Report Builder

    lukasreese/powerbi-claude-skills

    [power-bi] Power BI PBIR Report Builder with IBCS Visuals. An agent skill from lukasreese/powerbi-claude-skills.

    129 GitHub stars~7.5k tokensUpdated 5 mo ago
    Data & AnalyticsAuto-check passed
  • Pbi Doc

    xperiun/skills-xperiun-free

    Documenta projeto Power BI (PBIP) inteiro em markdown estruturado + HTML navegável (mini-site de doc).

    116 GitHub stars~3k tokensUpdated 24 days ago
    Data & AnalyticsAuto-check passed
  • Pbip Dependency Analyzer

    lukasreese/powerbi-claude-skills

    Power BI PBIP Dependency Analyzer. An agent skill from lukasreese/powerbi-claude-skills.

    129 GitHub stars~3.2k tokensUpdated 5 mo ago
    Data & AnalyticsAuto-check passed
  • Audit Tenant Settings

    data-goblin/power-bi-agentic-development

    Automatically invoke this skill whenever the user asks about Fabric tenant settings or Power BI tenant settings or auditing tenant settings.

    1k GitHub stars~4.7k tokensUpdated today
    Data & AnalyticsAuto-check passed

More from OneWave-AI/claude-skills

All 69 skills in this repo
  • CRM Data Cleanup

    OneWave-AI/claude-skills

    Finds duplicate and junk records in a CRM CSV export with fuzzy matching, normalizes fields and writes a reviewable merge plan plus import-ready files without touching the live CRM.

    336 GitHub stars~2.5k tokensUpdated 9 days ago
    Auto-check passed
  • Design Export Repair

    OneWave-AI/claude-skills

    Repairs broken decks and PDFs exported from Claude Design or similar AI deck generators: clipped text, wrong fonts and corrupted .pptx package structure.

    336 GitHub stars~2.6k tokensUpdated 9 days ago
    Auto-check passed
  • Bookkeeping Close

    OneWave-AI/claude-skills

    Categorizes transactions, reconciles bank and card statements to the ledger, works a month-end checklist and prepares a close package, without ever forcing a balance.

    336 GitHub stars~2k tokensUpdated 9 days ago
    Auto-check passed
  • CSV and Excel Merger

    OneWave-AI/claude-skills

    Combines CSV, TSV and Excel files into one verified table with pandas, by stacking or joining, mapping columns, normalizing keys and removing duplicates.

    336 GitHub stars~1.6k tokensUpdated 9 days ago
    Auto-check passed
  • Sec Filing Puller

    OneWave-AI/claude-skills

    Pulls financial statement numbers for US public companies straight from SEC EDGAR's free official XBRL APIs (companyfacts, companyconcept, frames, submissions) into a cited table.

    336 GitHub stars~2.1k tokensUpdated 9 days ago
    Auto-check passed
  • Spreadsheet QA

    OneWave-AI/claude-skills

    Answers business questions about the user's own spreadsheet or data export (CSV, TSV, XLSX from a CRM, Shopify, Stripe, QuickBooks, ad platforms, HR or payroll systems) correctly and auditably.

    336 GitHub stars~2.2k tokensUpdated 9 days ago
    Auto-check passed

Works with

Questions about Bi Measure Builder

What does Bi Measure Builder do?

Writes, explains, debugs, and optimizes BI calculations - Power BI / Fabric DAX measures and calculated columns, Tableau calculated fields (FIXED/INCLUDE/EXCLUDE LOD expressions, table…. Bi Measure Builder is an agent skill from OneWave-AI/claude-skills. Writes, explains, debugs, and optimizes BI calculations - Power BI / Fabric DAX measures and calculated columns, Tableau calculated fields (FIXED/INCLUDE/EXCLUDE LOD expressions, table calculations), and Looker LookML measures, dimensions, and derived tables.

When should I use Bi Measure Builder?

Bi Measure Builder fits situations like: the request involves DAX; A Power BI measure; A business metric such as YoY; rolling 12 months.

How do I install Bi Measure Builder in Claude Code?

Run `npx skills add OneWave-AI/claude-skills --skill bi-measure-builder -a claude-code`. Or copy the skill folder (bi-measure-builder in OneWave-AI/claude-skills) into .claude/skills/bi-measure-builder in your project. Claude Code loads it when a task matches its description.

How do I install Bi Measure Builder in Codex?

Run `npx skills add OneWave-AI/claude-skills --skill bi-measure-builder -a codex`. Or copy the skill folder (bi-measure-builder in OneWave-AI/claude-skills) into .agents/skills/bi-measure-builder in your project. Codex loads it when a task matches its description.

Can I use Bi Measure Builder in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add OneWave-AI/claude-skills --skill bi-measure-builder -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/bi-measure-builder, .gemini/skills/bi-measure-builder, .github/skills/bi-measure-builder and .opencode/skills/bi-measure-builder in your project.

What does Bi Measure Builder need to run?

Going by SKILL.md and its folder, Bi Measure Builder needs Python for the scripts in its folder and the command-line tools its instructions call (python). Our summary lists: Python 3.

Does Bi Measure Builder access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Bi Measure Builder safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Bi Measure Builder use?

Bi Measure Builder is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Bi Measure Builder use?

About 2.2k tokens (SKILL.md is roughly 8.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 6.9k tokens, read only when the agent opens those files.

What are the alternatives to Bi Measure Builder?

Skills that share tags, products or a category with Bi Measure Builder: Chart Selector (revfactory/harness-100, 1.3k stars), Power Bi AI Readiness (DKH-DK/Self-Service-Power-BI-Fabric, 113 stars), Pbi Report Builder (lukasreese/powerbi-claude-skills, 129 stars) and Pbi Doc (xperiun/skills-xperiun-free, 116 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Bi Measure Builder?

OneWave-AI (a GitHub organization) maintains it in OneWave-AI/claude-skills, which has 336 GitHub stars. The repository holds 69 skills in this directory. The repository was last updated on October 2, 2026.

Source: OneWave-AI/claude-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.