Product Documentation

Select a Product:

Find Text:
Submit a question:

Not seeing an answer to a question you might have? You can ask it here and we'll try to update the documentation to address it. If you're making a feature request or reporting a problem, please create a support item for it, instead!


Text From Values

Purpose

The Text from Values Visual lets you generate text output from source data in a wide range of formats - or you can roll your own output format using a simple yet powerful template language. Useful for building content to share in posts, emails, chat and more. Also useful for creating tabular export data that can be copied and pasted into other applications, with tailoring beyond what Power BI provides out of the box.

Data Bucket

The data requirements for the Text From Values visual includes 2 bucket fields:

Field Type Description
Value Source Any One or more fields that are reflected into the visual as a table of rows and columns. The actual output is based on a transformation of this tabular data, using an output format.
Template Source (optional) (in 1.2) Any Optionally provide the text for your template through your semantic model as a source.

Settings

Data and Interaction
Field Default Description
Preset Output Format CSV Tabular Controls how the text output will be formatted.
User Template
If the output format is set to 'User Template', this value is used to generate the text. A template is composed of plain text that can contain markup to indicate where values should be inserted. Markup tags are prefixed with "@" and can include:
Tag Description
@rows Emits the body portion of the markup for every row in the source data. (Row context changes for each iteration.)
Parameter Default Description
row_delimiter \r\n The delimiter to use between row iterations.
top 10000000 The maximum number of rows to iterate, after any skipped rows.
skip 0 The number of rows to skip before iterating for output purposes.
@columns Emits the body portion of the markup for every column in the source data. (Column context changes for each iteration.)
Parameter Default Description
column_delimiter , The delimiter to use between column iterations.
includeblank true Identifies whether blank values should be emitted or ignored. Can be true to include blank or false to exclude.
top 20000 The maximum number of columns to iterate, after any skipped columns.
skip 0 The number of columns to skip before iterating for output purposes.
@cell Emits the textual representation of a cell value. A cell is found at a specific row and column in the source data.
Parameter Default Description
need_to_escape_regex [,"\s|] An optional regular expression that when applied to the text result of the function and results in a match, applies delimiting around the field value.
delimit_character " When field delimiting is needed, is the character used for delimiting.
from_column When specified, names a column (case-insensitive) or is the column ordinal index (starting from 0) to pull the cell value from. When omitted, uses the current column context, such as from the current column iteration.
from_row When specified, is the row ordinal index (starting from 0) to pull the cell value from. When omitted, uses the current row context, such as from the current row iteration.
max_length 200000 Identifies the maximum length for the field value emitted. (The value will be truncated if it is longer than this value.)
min_length 0 Identifies the minimum length for the field value emitted. (Extra spaces will be used for padding if needed.)
@pivot Transforms columns into rows and rows into columns. Can be useful for card-like representation of data.
Parameter Default Description
top 20000 The maximum number of rows to take as part of the transformation.
skip 0 The number of rows to skip as part of the transformation.
@escape(type) Escapes the text contained in the body of the markup. The only currently supported escape type is "html".
@max(){body} Finds the maximum value from source text that is comma or line delimited, in the markup body. An attempt is made to treat the values as numbers and if this fails, it uses a text comparison.
@min(){body} Finds the minimum value from source text that is comma or line delimited, in the markup body. An attempt is made to treat the values as numbers and if this fails, it uses a text comparison. (in 1.2)
@avg(){body} Finds the average value from source text that is comma or line delimited, in the markup body. An attempt is made to treat the values as numbers and if this fails, it uses a text comparison. (in 2.0)
@rowscount() Emits the number of rows that are in the current @rows context. (in 2.0)
@divide(){a}{b} Attempts to parse "a" and "b" as numeric values and if successful, emits a divided by b as a number. (in 2.0)
@format(){body} Attempts to parse the markup body and emit it using a specific format. (in 2.0)
Parameter Default Description
format Can be one of: a) a fixed format code, b) if the value is known to be a date, can be a date format string that matches the capabilities described here.
Fixed format codes can be: "c" - currency, "cn" - currency with no grouping symbol (i.e. thousands separator), "n" - number, "nn" - number with no grouping symbol, "p" - percentage, "pn" - percentage with no grouping symbol.
mindecimal If specified, overrides the "minimum decimal places" settings at the visual level.
maxdecimal If specified, overrides the "maximum decimal places" setting at the visual level.
currencycode USD When the data is formatted as "currency", identifies the ISO (4217) currency code to use.
@empty(){a}{b} Parses text for "a" and if it results in an empty string, emits text "b", in parsed form. (in 1.2)
@notempty(){a}{b} Parses text for "a" and if it does not result in an empty string, emits text "b", in parsed form. (in 1.2)
@ifequals(){a}{b}{c}{d} Parses text for "a" and "b", and if the results evaluate to the same value, then emit text "c", in parsed form, otherwise emit text "d" in parsed form. All terms are required, even if empty. All terms are required, even if empty. (in 1.2)
@ifgtequals(){a}{b}{c}{d} Parses text for "a" and "b", and if the result of evaluating "a" is greater than or equal to the result of evaluating "b", then emit text "c", in parsed form, otherwise emit text "d" in parsed form. All terms are required, even if empty. (in 1.2)
@ifltequals(){a}{b}{c}{d} Parses text for "a" and "b", and if the result of evaluating "a" is less than or equal to the result of evaluating "b", then emit text "c", in parsed form, otherwise emit text "d" in parsed form. All terms are required, even if empty. (in 1.2)
@cellref(r,c,f) Acts as a short-cut for the template text "@rows(,r){@columns(,,1,c){@cell()}}". This allows direct access to cells by row/column numbers, regardless of context. The optional "f" format modifier lets you force a raw value (using "r") or formatted value (using "f"). (in 2.2)
@bgcolor(color) Parses text for "color" and uses it as a background color override, for the entire text area of the visual. Color can be a well-known color name, or a hex color (e.g. #ff8000) (in 2.2)
@setvar(n){v} Parses text for "v" and stores is in a variable named "n". "n" can be omitted to serve as a "default" variable. This variable can be later retrieved using @getvar. If used in a change detection template, changes in the variable value can be tracked across refreshes of the visual. (in 2.2)
@getvar(n) Emits the value of a variable named "n". Note that the "raw" value of the variable is emitted (can be unformatted). "n" can be omitted, in which case the value of the "default" variable is emitted. If the variable does not exist, nothing is emitted in the output stream. (in 2.2)
@lastvar(n) Emits the previous value of a variable named "n". Note that the "raw" value of the variable is emitted (can be unformatted). "n" can be omitted, in which case the previous value of the "default" variable is emitted. If the variable does not exist, nothing is emitted in the output stream. This function supports use cases such as checking for increases versus decreases in values, across refreshes. (in 2.2)
@changed(n){a}{b} "n" can name a variable that was either set explicitly in the change template, or be omitted, in which case the value of the default variable is used. (The default variable gets set to the output of the change template.) If body sections "a" and "b" are omitted, the function emits either "true" or "false" as text. If the body sections are provided, "a" is parsed and emitted if there was a change detected in the relevant variable, since the last refresh; "b" is parsed and emitted if there was no change. Note that upon first refresh, this will evaluate to false. (in 2.2)
@signaled(n){a}{b} "n" can name a signal label that was either set explicitly in the template, or be omitted, in which case the value of the default label is used. (The default label is used by signal-related settings such as 'Change Auto Signals' and 'Signal Dismissal Interval'.) If body sections "a" and "b" are omitted, the function emits either "true" or "false" as text. If the body sections are provided, "a" is parsed and emitted if the associated signal name is in a signaled state; "b" is parsed and emitted if it is in a non-signaled state. (in 2.2)
@signal(n) "n" can name a signal label that will be flagged as being in a signaled state. If "n" is omitted, a default signal label is used. Once the visual is in a signaled state, other settings come into play, such as 'Signaled Background Color' and 'Signal Dismissal Type'. (in 2.2)
@or(){a}{b}{c}{d} The text for "a" and "b" is parsed and if the value for either is "true" or "1", the section "c" is parsed and emitted; otherwise section "d" is parsed and emitted. (in 2.2)
@animation(type) Enables an animation for the visual. "type" can be 1 (falling confetti), 2 (curtains), 3 (exploding confetti), 4 (marquee), 5 (flip), 6 (fade). Each type can have additional optional parameters. Optional parameters can name a variable previously set, or be a literal value. Default values for parameters are found in the animation settings.
These parameters correspond what can be passed to the @animation function, as comma-separated values:

Falling Confetti parameters:
  1. 1 (Falling Confetti)
  2. Number of particles
  3. Delay between animation frames (in milliseconds)
  4. Milliseconds for the animation to play before it stops (0/default implies run indefinitely)
Curtain parameters:
  1. 2 (Curtains)
  2. Milliseconds to wait before curtain opens (0/default implies will not open on a timer)
  3. Text to show on left curtain surface
  4. Text to show on right curtain surface
  5. Curtain color
  6. Font size (pixels) for text on the curtain surface
  7. Text color for text on curtain surface
  8. Font family name for text on curtain surface
  9. "C" to center text on the curtain surface, within each curtain frame (default is to align text to meet in the center)
Exploding Confetti parameters:
  1. 3 (Exploding Confetti)
  2. Number of particles
  3. Delay factor - not tied to frame rate; higher values = slower
  4. Milliseconds for the animation to play before it stops (0/default implies will only fire one time)
  5. Explosion style. 1 = Centralized (default); 2 = Wider; 3 = Slow Float; 4 = Wide and Slow; 5 = From Sides
  6. Explosion source X offset (0 = left side of visual, ranging to 100 = right side of visual)
  7. Explosion source Y offset (0 = top of visual, ranging to 100 = bottom of visual)
Marquee parameters:
  1. 4 (Marquee)
  2. Direction of scroll. U = upward, D = downward, LR = left-to-right, RL = right-to-left
  3. Scroll speed in pixels per second
  4. Start on screen. 1 = yes, 0 = no. (When "no", positions initially depending on the direction.)
Flip Transition parameters:
  1. 5 (Flip) (no other parameters exposed in 2.5)
Fade Transition parameters:
  1. 6 (Fade) (no other parameters exposed in 2.5)
Example: @animation(1,count,25,5000) - confetti with the number particles stored in a variable "count" that was previously set: eg. @setvar(count){100}
... plus 25ms delay between frames, and 5 seconds of animation before stopping. Use of variables lets you do things like change the nature of the animation based on data from your semantic model! (in 2.3)

Most markup tags other than @cell include a "body" portion which is contained within braces ({ and }) immediately following the markup tag. For example, in "@rows(){a}", "a" is the body portion of the markup tag. Some tags require multiple body segments, such as @empty and @ifequals.
Complete examples of usage can be found below, in the section "User Templates".
No Data Template Optionally provide template text that will be used if there is no data available. (in 1.2)
Change Detection Type No Change Detection Controls if/how change detection is applied. If change detection is enabled, @changed can be used in templates to control things like formatting, when changes are detected between refreshes. (in 2.2)
Change Detection Template You can optionally define a template where the output reflects a 'state' that can be checked for changes across refreshes of the visual. This lets you do things such as highlight values when they change, on a refresh (scheduled or manual). The template format matches the same template language used for rendering. You will typically use the @changed function in a user-defined template to see if the value that's evaluated from this template changes. (Some preset formats may override this template value, and you can pick a preset changed type, or create your own using 'Change Template (setting)' for the 'Change Detection Type' setting.) (in 2.2)
Change Auto Signals Off When enabled (and when change detection is enabled), any detected change will 'signal', which can have visual effects that can persist across refreshes. This is equivalent to using @changed and @signal together in a template. (in 2.2)
Signal Dismissal Type Link Controls if/how a signaled state can be cleared. (in 2.2)
Signal Dismissal Interval 60 When the 'Signal Dismissal Type' setting is set to 'Timer', this contains the number of seconds to wait before the signal state is automatically dismissed. (in 2.2)
Column Override Expressions
Allows one to override global settings which apply to columns. General format is to have one expression, per line, for columns that requires any overrides. Column expressions are composed of one or more key-value pairs, which are delimited with semi-colons (;). Keys are separated from values with an equals sign (=). Valid keys include:
Tag Description
col Allows one to override the column that the expression applies to. Can be a column name (case-insensitive) or a column ordinal index (starting from 0). If omitted, applies to the column that follows the previous column expression, in ordinal order (or the first column, if it is the first expression).
ignorenonalphanum Can be true or false. If omitted, uses the global setting for "Ignore Non-alphanumeric".
accentneutral Can be true or false. If omitted, uses the global setting for "Diacritic Neutral".
usefuzzy Can be true or false. If omitted, uses the global setting for "Fuzzy Matching".
casemustmatch Can be true or false. If omitted, uses the global setting for "Case Must Match".
keepwhitespace Can be true or false. If omitted, uses the global setting for "Keep Whitespace".
groupby Can be true or false. If omitted, uses the global setting for "Default Group By". Columns that are grouped, will be sorted and provide unique combinations of values, depending on rules you have set that might combine values. For example, for a grouped by column that is "case insensitive," "ABC" and "abc" could be combined into one of those two values, the choice of which is controlled through the "Default Merge Mode" setting.
sortdir Can be A (ascending), D (descending) or N (none) for the column sort direction. If omitted, uses the global setting for "Default Sort Order". Applies to grouped by columns, or all columns if none are grouped by.
concatsep When concatenation is applied, is the text used to separate terms. If omitted, uses the global setting for "Concatenation Separator".
mergemode If applicable, controls how values are changed prior to the "group by" phase. Can be one of the following values:
Value Description
B Best Fit - An algorithm that considers frequency of occurrence, use of diacritics and mixed-case
F First (with sort) - Picks the first value in the group, based on the natural sort
C Count - Only considers the frequency of occurrence
aggregatemode Controls how values are aggregated during the "group by" phase. Can be one of the following values:
Value Description
S Sum/Max/Concatenate - numeric values are summed, dates have the maximum taken, and unique text values are concatenated (using a concatenation separator that can be overridden)
F First - Picks the first value in the group
M Minimum - Picks the minimum value in the group
X Maximum - Picks the maximum value in the group
C Count - Emits the number of values in the group
D Count Distinct - Emits the number of distinct values in the group
format Supports explicit definition of the formatting to apply to the column. Can be one of the following values:
Value Description
c Currency (formatted using the ISO currency code in the "Currency Code" setting)
cc Compact Currency (formatted using the ISO currency code in the "Currency Code" setting, in compact display format)
d Date (formatted using the "Date Format String" setting)
i Integer (no formatting)
ic Compact Integer (formatted using current locale, in compact display format)
if Formatted Integer (formatted using current locale)
n Number (no formatting)
nc Compact Number (formatted using current locale, in compact display format)
nf Number (formatted using current locale)
p Percent (formatted using current locale)
t Text
Examples:
  • "col=lastname;groupby=true;accentneutral=true;sortdir=D" - Sort lastname column (case insensitive) descending order, merge like values determined based on same base ASCII equivalent for any diacritic characters.
  • "col=1;concatsep=-" - For the second column (0-based), we assume it is textual and if values are aggregated (assuming it is not a groupby column), they will be separated with a dash.
  • "mergemode=C" - The col is not specified, so if this is the first expression, it applies to the first column. For this column, for like values that could be merged, the most common value will replace less common values.
Default Aggregation Mode Sum/Max/Concatenate If the visual has grouped columns, identifies the default aggregation to use for any non-grouped columns.
Default Merge Mode Best Fit If the visual has merged values, defines the default behavior when creating output for that merged value. (eg. if 'ABC' and 'Abc' merge due to case insensitivity, determines which value is output.)
Include Header Row Off When enabled, a header row (row 0) is included based on the display values for the corresponding data fields. Some preset formats override this setting.
Quote Blank Values On When enabled, blank values will be enclosed in the field delimiter that applies (eg. double-quotes).
Format Numerics Off When enabled, numeric values by default are formatted using locale-specific rules, otherwise they are left unformatted (raw). (in 1.1)
Copy Format Auto When the copy link is used, identifies the format to use for the clipboard format. (in 2.0)
Maximum Rows 10000 Regardless of what may be specified in any user template for rows to 'take', this is a global limit on the number of rows allowed to process. This helps ensure performance does not accidentally degrade, although you can change this to higher (or lower) values as required.
Default Sort Order Ascending Defines the default sort order applied to all grouped columns, in order of appearance. Individual ordering is possible through use of column override expressions.
Case Must Match On When disabled, case is not required to match (allowing for the possibility of merging rows).
Ignore Non-alphanumeric Off When enabled, internally compares only alphanumeric characters, for merge purposes.
Keep Whitespace Off When enabled, whitespace must match whitespace between compared values, for merge purposes (regardless of 'Ignore Non-alphanumeric' setting).
Diacritic Neutral Off When enabled, internally compares diacritic (accented) characters as if ASCII characters, for merge purposes.
Fuzzy Matching Off When enabled, similar text values are allowed to merge, based on fuzzy matching rules. This is most useful when dealing with whole words, versus codes and identifiers.
Default Group By Off Provides the default 'group by' property for every column present. Enabled implies all columns can be grouped by default (effectively picks distinct rows). Disabled implies no columns are grouped (no aggregation will be applied).
Concatenation Separator When concatenation is applied, is the text used to separate terms.
Select All On When enabled, setting focus to the text box causes all text to be selected.
Use Default Context Menus Off When enabled, context menus on text controls will be the browser default as opposed to the Power BI context menu. This gives you the option to use browser menu features (eg. copy).
Allow Tooltips On When enabled, tool-tips may be shown when hovering over the text area. (in 1.1)

Formatting
Field Default Description
General Style Base Default Offers some different general styles for the visual. (in 1.1)
Extended Mark-up Off
When enabled, the template can include special markup elements, similar to HTML. This changes the nature of the visual to be in-line scrollable text, instead of a textarea control. Note: you must correctly pair start and end tags. Listed below are allowed markup tags. (in 1.2)
Tag Description
<b>text</b> Makes "text" bold.
<i>text</i> Shows "text" in italics.
<u>text</u> Underlines "text".
<c>text</c> Centers "text" horizontally.
<fontem-number>text</fontem> Sets the font size to "number" (em units) for the "text".
<hr/> Inserts a horizontal rule line.
<#color>text</#color> Shows "text" in a specified color. "color" must either be a well-known color name (eg. red, blue, green) or a hex color code (eg. #FF0000).
<img-imgcode/> Inserts a small in-line image. "imgcode" must be one of the following: "greenup", "reddown", "question", "info", "error", "alert", "check", "star", "thumbup", "thumbdown", "greencheck"
<border-[type][roundsize][fill][style][color]>content</border> Creates a border element that can contain text or other elements. Parameters can be included to control the border shape/size. (in 2.0)
[type] can be left blank or "round"
[roundsize] if type is "round" can be "sm" (small), "md" (medium) or "lg" (large) - controls the rounded border radius
[fill] can be blank or "fill" - if "fill", the region is filled with the border color (in 2.4)
[style] can be blank, "thin", "think", "dotted" or "ridge"; blank is between thin and thick
[color] if used should be led with "#" and can be a hex color or a well-known color name
Examples: <border-roundlgthin#red> or <border-thick> or <border-#80ff40> or <border-roundthick>
<margin-[left_or_all][-top][-right][-bottom]>content</margin> Creates a region of whitespace that can contain text or other elements. (in 2.0)
[left_or_all] - if the only number supplied, the margin is applied to all sides; otherwise can specify margin sizes starting from the left side, delimited with "-"
Examples: <margin-20> or <margin-20-0-20-10>
<table></table> Instantiates a HTML-like table element. Inside the table, you can use "tr" and "td" tags to create rows and cells. (in 2.4)
<align-[dir]>text</align-[dir]> "dir" can be "left", "right" or "center" - controls text alignment for "text", in its parent container. (in 2.4)
Text Read Only On When enabled, the text area will be read-only. (in 1.1)
Word Wrap On When enabled, word-break word wrapping will be used for the generated text area. (in 1.1)
Show Copy Clipboard Off When disabled, the copy to clipboard link will be hidden. Note: copy functionality varies based on browser used. (in 2.0)
Copy Outer (Extended) Off When enabled, the container HTML is copied, when using extended markup mode. This includes some container formatting (e.g. color). (in 2.0)
Show Ctrl-C Message Off When enabled and when one or more characters are selected in the text area, a message can be shown indicating to the user that they can pretty Ctrl-C to copy the selected text to the clipboard.
Copied Message Duration 4 The number of seconds to display the 'copied data to clipboard' message. Use zero to show no message. (in 2.0)
Show Loading Message On When enabled, the loading message will be shown below the value entry control.
Show Counts On When enabled, rows loaded and matched counts are shown.
Extended Markup: Horizontal Alignment Center When extended markup is used, controls horizontal text alignment, for all lines of output. (in 1.2)
Extended Markup: Vertical Alignment Middle When extended markup is used, controls vertical text alignment, for all output text. (in 1.2)
Extended Markup: Image Size 24 When using the img tag, identifies the width and height for the image, in pixels. (in 1.2)
Use Model Formatting Off When enabled, format strings will be taken from the semantic model. When disabled, you can use settings such as 'Date Format String' to control formatting, independently of the model. (in 2.2)
Date Format String L For values which are dates, specifies the date format to use. (Default of 'L' uses locale-specific date-only formatting.) Valid date formats are explained more here.
Currency Code USD If the formatting for the value is set as 'currency', this indicates the general currency type, in ISO 4217 currency code format (eg. USD).
Numeric Max Decimal 2 For values that are numbers (and Format Numerics is enabled), specifies the maximum number of decimal places.
Numeric Min Decimal 0 For values that are numbers (and Format Numerics is enabled), specifies the minimum number of decimal places.
Generated Text Size 10.5 The size of the generated text.
Generated Text Font The font family for the generated text.
Counter Text Size The size of the counter text. (in 2.1)
Counter Text Font The font family for the counter text. (in 2.1)
Additional Inner Padding 0 Allows additional padding to be included between elements within the visual.
Clear Signal/Alert Text Clear Alert When the visual enters into a signaled state and the 'Signal Dismissal Type' setting is set to 'Link', this is the text used for the link. (in 2.2)
Copy Link Text Copy Text to show for the 'Copy' link. (in 2.2)
Copied Message Text Copied to clipboard. Text to show for the 'Copied to clipboard' message. (in 2.2)
Loading Text Loading Text to show for the 'Loading' message.
Loaded Text loaded Text to show for the 'loaded' count text.
Message: Template Error Template error: {0} Text to show when there is a template parsing issue. (Allows {0})

Colors
Field Default Description
Text Color The color override for general text within the visual.
Text Area Background Color The background color override for the generated text area.
Background Color The background color for the visual's whitespace areas.
Signaled Background Color When the visual is in a signaled state, this can serve as a background color override, in absence of another background color setting (eg. set via @bgcolor). (in 2.2)
Background Opacity 100 The opacity (percentage) for the background color. (Zero is fully transparent.)

Animation Defaults
Field Default Description
Animation Type None or in Template Controls if an animation will be shown inside the visual, on rendering. (in 2.3)
Split Delimiter --- The text included here can be used with 'split' animation types to create one or more 'subcards' that are cycled through. (in 2.5)
Run After (seconds) 0 The number of seconds to wait until the animation is performed. (Applies to all types except Curtain.) (in 2.4)
Confetti: Particles An override for the number of confetti particles to show, covering both falling and exploding confetti. The default (and 0) is based on the size of the visual. (in 2.3)
Confetti: Delay When set, the number of milliseconds to wait between animation frames for falling confetti. Larger numbers imply a slower confetti drop. For exploding confetti, introduces a delay between individual explosions. (in 2.3)
Confetti: Hide After When set, the confetti drop will stop after this number of milliseconds; confetti explosions will keep happening until this time elapses. When not set (or zero), the confetti fall animation never stops, or the confetti explosion only happens one time. (in 2.3)
Curtain: Open After When set, the curtain will open after this number of milliseconds. When not set (or zero), the curtain will not open automatically but can still be clicked to open. (in 2.3)
Curtain: Left Panel Text You can optionally specify text to show on the left curtain panel. (in 2.3)
Curtain: Right Panel Text You can optionally specify text to show on the right curtain panel. (in 2.3)
Curtain: Text Alignment Right/Left Controls how any text is aligned on the curtain surface. Note that Right/Left allows text on the left curtain to sit directly adjacent to text on the right curtain, allowing for words to appear continuous over both sides. (in 2.3)
Curtain: Text Font The font family for any text used on the curtain surface. (in 2.3)
Curtain: Text Size 10.5 The size of any text used on the curtain surface. (in 2.3)
Curtain: Color The color for the closed curtains. (Default = orange) (in 2.3)
Curtain: Text Color The color to use for text on the curtain surface. (Default = white) (in 2.3)
Explosion: Style Centralized (default) Controls the style for the confetti explosion animation. (in 2.4)
Explosion: Horizontal Center 50 For exploding confetti, identifies the horizontal position as the origin of the explosion. Scale is a percentage: 0 (left-most) to 100 (right-most). (in 2.4)
Explosion: Vertical Center 75 For exploding confetti, identifies the vertical position as the origin of the explosion. Scale is a percentage: 0 (top-most) to 100 (bottom-most). (in 2.4)
Marquee: Direction Up Controls the direction of scroll for the marquee animation. (in 2.4)
Marquee: Off Screen On When enabled, the marquee begins scrolling from off-screen. (in 2.4)
Marquee: Speed Controls how fast the marquee scrolls. In pixels per second. When 0, determines based on the visual size. (in 2.4)
Transition: Delay 5000 The number of milliseconds to wait before a transition (e.g. flip, fade) is invoked. Minimum granularity is 100 milliseconds, default is 6 seconds. (in 2.5)
Split: Background Colors A semi-colon delimited list of colors which are used as background colors for cards which are being animated with a split style. Colors are cycled sequentially. Color can be a named color (e.g. 'red') or a hex color (e.g. #ff0000). Default = orange (in 2.5)
Split: Foreground Colors A semi-colon delimited list of colors which are used as foreground colors for cards which are being animated with a split style. Colors are cycled sequentially. Color can be a named color (e.g. 'red') or a hex color (e.g. #ff0000). Default = black (in 2.5)
Flip/Fade: Speed (ms) 1000 The speed of the flip/fade for those animation styles, in milliseconds. (default = 1000ms) (in 2.5)
Flip/Fade Style Rounded When using the flip/fade animation styles, controls the display style for the nested card. (in 2.5)
Split: Click Advances On When enabled, clicking on the card will advance to the next subcard. (in 2.5)
Fade: Approach Out Then In When using the fade animation style, controls how the fade is applied. (in 2.5)

Site License and Diagnostics
Field Default Description
Licensed By Provide the name that the product was registered with, as found in the confirmation email.
Site License Key For site licensing (not from AppSource). Provide the 22 character license key, as found in the confirmation email. (Note: a reload of the report is needed after the key and licensee is set.)
Hide Desktop Watermark Off When enabled, the footer watermark for Power BI Desktop is hidden. (The watermark provides useful information about support, etc.)

User Templates

Preset output formats are based on the sample template language that you can use to create your own templates. Here are a few complete examples:


CSV Tabular
@rows(){@columns(){@cell()}}
  • Iterates all columns within all rows, using all defaults for delimiters. The visual setting "Include Header" controls whether a header row is included or not.

CSV Tabular, Pivoted
@pivot(){@rows(){@columns(){@cell()}}}
  • Similar to CSV Tabular, but wraps the entire template with a pivot of columns to rows and rows to columns.

TSV Tabular
@rows(){@columns("\t"){@cell("[\t\n\r\"]")}}
  • Uses Tab as the column delimiter and still quote-delimits but over a smaller range of cell values (Tab, line feeds and double quotes).

TSV Tabular, Pivoted
@pivot(){@rows(){@columns("\t"){@cell("[\t\n\r\"]")}}}
  • Similar to TSV Tabular, but wraps the entire template with a pivot of columns to rows and rows to columns.

Pivot Columns, No Blanks, Blanks Between Rows
@rows("\r\n\r\n"){@columns("\r\n",false){@cell("","")}}
  • Present every column on a new line, with an extra line break between rows.
  • Do not include blank values.

Pivot Columns With Labels, Blanks Between Rows
@rows("\r\n\r\n",,1){@columns("\r\n"){@cell("","",,0): @cell("","")}}
  • Present every column on a new line, with an extra line break between rows.
  • Rows will the show column heading value, followed by a colon, followed by the cell value.
  • Header row will be included, regardless of global setting.
  • The header row is skipped for iteration, but it is referenced in the first @cell use

First Row, Pivot Columns, No Blanks
@rows(,1){@columns("\r\n",false){@cell("","")}}
  • Similar to "Pivot Columns, No Blanks, Blanks Between Rows", but only the first row will be emitted.
  • Do not include blank values.
  • Useful if one is filtering to a specific entity that one wishes to build a data card for.

First Row, Pivot Columns With Labels
@rows(,1,1){@columns("\r\n"){@cell("","",,0): @cell("","")}}
  • Similar to "Pivot Columns With Labels, Blanks Between Rows", but only the first row will be emitted.
  • Rows will the show column heading value, followed by a colon, followed by the cell value.
  • Header row will be included, regardless of global setting.
  • The header row is skipped for iteration, but it is referenced in the first @cell use
  • Useful if one is filtering to a specific entity that one wishes to build a data card for.

HTML Table (Style 1)
<table cellSpacing="1" cellPadding="1" width="100%" border="1">@rows(){<tr>@columns(""){<td>@escape(html){@cell("","")}</td>}</tr>}</table>
  • Generates lightly a formatted HTML table for all rows and columns.

HTML Table (Style 1), With Header
<table cellSpacing="1" cellPadding="1" width="100%" border="1"><thead>@rows(,1){<tr>@columns(""){<th align="center" bgColor="tan"><strong>@escape(html){@cell("","")}</strong></th>}</tr>}</thead><tbody>@rows(,,1){<tr>@columns(""){<td>@escape(html){@cell("","")}</td>}</tr>}</tbody></table>
  • Generates lightly a formatted HTML table for all rows and columns.
  • Header row will be included, regardless of global setting.
  • A table header will be included with column names.

Single Field per Row: Flip Transition
@animation(5)@rows(){---<b>@cell(\"\",,0)</b>}
  • Takes all rows and shows the first column on pages that "flip" (using the animation setting). Animation speed can be adjusted in settings.
  • Key concept: the --- acts as a delimiter between "frames" of the animation. Empty frames are skipped. You can change the delimiter text in settings.
Other Resources / Links:

AppSource Purchase Guide

Learn more about purchasing one or more user licenses from Microsoft AppSource.
This application may no longer respond until reloaded. Reload 🗙