Stop reading examples. Try them.
Most Power BI references show you a formula and a result and leave it at that. On the function pages below, you can edit the numbers yourself and watch the actual result recalculate — right on the page, no Excel, no upload, unlimited use.
Showing 59 of 59 examples
DAX
DIVIDE()
Set the denominator to 0 and watch the fallback trigger instead of an error.
IF()
Clear the false result and see the optional third argument actually return BLANK().
SWITCH(TRUE(), ...)
Reorder a condition and reproduce the exact shadowing bug the page warns about, yourself.
MID()
See the same substring need a different start number than Power Query’s Text.Middle().
ISBLANK() vs = 0
Watch BLANK() = 0 come back TRUE while ISBLANK() on that same 0 comes back FALSE.
TRIM()
Watch DAX collapse a double space between words while Power Query leaves it untouched.
DATEDIFF()
Watch a 1-day gap across January 31st return 1 for MONTH — it counts boundaries, not periods.
CALENDARAUTO()
Add an unrelated audit-log date column and watch it silently widen your whole date table.
DATEADD() vs PARALLELPERIOD()
Filter to just half a month and watch PARALLELPERIOD grab the whole prior month anyway.
UNION()
Swap a table’s column order and watch UNION() silently mix Amount values into the Region column.
TODAY() / NOW()
Watch a calculated column freeze at last refresh while a measure keeps counting the real days.
KEEPFILTERS()
Watch CALCULATE silently replace your visual filter, then fix it by ANDing instead of overwriting.
VALUES() vs DISTINCT()
Add an orphaned fact row and watch VALUES() grow an extra blank row that DISTINCT() never gets.
ADDCOLUMNS() vs SELECTCOLUMNS()
Watch SELECTCOLUMNS silently drop every column you didn’t explicitly list back in.
CROSSFILTER()
Filter the fact table and watch it do nothing to the dimension table — until CROSSFILTER lets it.
IFERROR()
Watch IFERROR catch a real error, then pass a BLANK() straight through untouched.
ALL() vs ALLSELECTED()
Pick a slicer region and watch ALLSELECTED track it while ALL ignores the selection entirely.
RANKX() — Skip vs Dense
Create a tie and watch Skip jump a rank ahead while Dense keeps counting with no gap.
TOPN() — Ties at the Cutoff
Ask for the Top 3 and watch a tie for last place hand back 4 rows instead.
USERELATIONSHIP()
Pick a month and watch Total Sales and Sales by Ship Date disagree on the same fact table.
LOOKUPVALUE()
Give two matching rows different prices and watch a real error appear, live.
RELATEDTABLE()
Switch off the relationship and watch a real order count silently become BLANK().
DISTINCTCOUNT() vs DISTINCTCOUNTNOBLANK()
Clear one cell and watch DISTINCTCOUNT quietly count "nothing" as its own value.
COUNTROWS() vs COUNT() vs COUNTA()
Type "N/A" into one cell and watch all three functions land on a different number.
SUMX()
Watch "sum of the products" and "product of the sums" land nowhere near each other.
SELECTEDVALUE()
Check a second box on a live slicer and watch it fall back instead of guessing.
EARLIER()
Drop EARLIER() from a rank calculation and watch every single row silently come out 1st.
CALCULATE() + ALL()
Forget ALL() in a percent-of-total measure and watch every category read 100%.
FILTER()
Edit the sales values and watch a dynamic AVERAGE() threshold move right along with them.
Power Query M
Text.Middle()
Shift Start by one and watch the zero-indexing off-by-one happen on a live character ruler.
Text.Split()
Type two separators back to back and get a real empty-string element, not a skipped one.
Date.AddMonths()
Add a month to January 31st and watch it clamp to February 28th instead of erroring.
Text.Contains()
Flip a case-sensitive false into true with the Comparer.OrdinalIgnoreCase checkbox.
Text.Trim()
Swap in a non-breaking space and see it survive trimming, made visible on a character ruler.
try ... otherwise
Type anything that isn't a date and watch the fallback catch it instead of erroring.
Number.RoundUp() / RoundDown()
Round a negative number and see "up" mean away from zero, not toward positive infinity.
Date.From() locale ambiguity
Watch the same date text silently parse into two different days depending on locale.
Number.From() locale ambiguity
Watch "1.234,56" parse into two different numbers depending on the decimal separator.
error / try
Raise your own error and watch your exact message come back in [Error][Message].
Number.ToText()
Format 0.5 as "P" and watch it become "50.00%", not "0.50%".
null = null
See null = null return true in M — unlike SQL, where NULL = NULL is UNKNOWN.
Table.SelectColumns()
Request a column that doesn’t exist and watch it error — then fix it with MissingField.
Table.FirstN() vs SelectRows()
Watch FirstN stop at the first non-match and miss a later matching row entirely.
DateTime.LocalNow()
See your own browser’s local time vs UTC, right now — the exact gap a scheduled refresh hits.
Csv.Document()
See the raw Column1/Column2 output before Table.PromoteHeaders ever runs.
Table.SplitColumn()
Add a one-word name and watch the missing column fill with null, not an error.
Table.Sort()
Sort 10, 9, 2, 1 as text and watch "10" land right after "1" instead of after "9".
Table.Distinct()
Dedupe by CustomerID and watch a second email get silently discarded, not merged.
Table.AddIndexColumn()
See the default index start at 0, then set initialValue to 1 to fix it.
List.Distinct() & List.Contains()
Watch "Apple" and "apple" both survive List.Distinct() until you check the comparer box.
Merge Queries — Join Kinds
Switch from Left Outer to Inner and watch an unmatched customer silently vanish from the result.
Table.Group()
Type "bikes" instead of "Bikes" and watch it silently become its own extra group.
Table.Unpivot() vs UnpivotOtherColumns()
Add a new month column and watch a fixed-list unpivot silently leave it behind.
Table.ReplaceValue()
Leave a column off the search list and watch a real "N/A" survive with no warning at all.
Table.SelectRows()
Filter for "active" and watch "Active" and "ACTIVE" both get silently dropped.
Table.AddColumn() vs Table.TransformColumns()
Try reaching a second column from TransformColumns and watch it throw a real error every time.
Table.TransformColumns()
Lowercase one letter in the column name and watch the whole step fail, live.
List.Accumulate()
Swap the accumulator's parameter names and watch the final result land nowhere close.
List.Generate()
Flip < to <= in the condition and watch the sequence quietly gain one more item.
More on the way — see the changelog for what's new, or browse the full documentation.