Workday Adaptive functions#
The Workday Adaptive family reads data from, and writes data back to, Workday Adaptive Planning. Each function has a canonical RW.Adaptive.* name and a legacy AI* alias.
| Function | Alias | What it does |
|---|---|---|
| RW.Adaptive.Extract | AIEXTRACT |
Builds and imports a custom Adaptive report from tier and option formulas |
| RW.Adaptive.Tier | AITIER |
Defines one row, column or filter axis for an Extract |
| RW.Adaptive.Option | AIOPTION |
Sets a named report option that Extract reads |
| RW.Adaptive.Filter | AIFILTER |
Stores a reusable dimension filter |
| RW.Adaptive.Input | AIINPUT |
Marks a cell for upload to Adaptive on submit |
| RW.Adaptive.ModeledInput | AIMODELEDINPUT |
Updates one field on a modeled Adaptive sheet |
| RW.Adaptive.ModeledExport | AIMODELEDEXPORT |
Exports modeled Adaptive data into a range or table |
The AI* alias is not artificial intelligence#
The aliases in this family begin with AI: AIEXTRACT, AITIER, AIOPTION, AIFILTER, AIINPUT, AIMODELEDINPUT, AIMODELEDEXPORT. That AI is short for Adaptive Insights, the former name of Workday Adaptive Planning. These functions have nothing to do with generative AI or large language models. They are a data connector.
The only generative worksheet function is RW.Tools.AIInsight. See The AI insight function. Do not confuse the two.
Before you use these functions#
- A Workday Adaptive Planning connection with valid metadata must be configured for the workbook. An admin sets this up; see the Connector catalog.
- The read and export functions run during report generation. The input and modeled-input functions run during input submission, not the output pass.
- The functions are inert in desktop Excel.
- Version availability across this family is approximate: most date from at least around v5.0.0.42, with
RW.Adaptive.Filterfrom around v5.0.0.79.
RW.Adaptive.Extract#
Generates an Adaptive report into a worksheet range by combining the tier formulas that define its axes with the option formulas that control its output.
Signature
=RW.Adaptive.Extract(targetRange, tiersRange, optionsRange)
| # | Argument | Type | Meaning |
|---|---|---|---|
| 1 | targetRange |
Range | Top-left output range for the report. |
| 2 | tiersRange |
Range or multi-range | The cells holding the RW.Adaptive.Tier formulas for rows, columns and filters. |
| 3 | optionsRange |
Range or multi-range | The cells holding the RW.Adaptive.Option formulas. |
All three are required.
Behavior
- Extract gathers every
RW.Adaptive.Tierformula fromtiersRangeand splits them into rows, columns and filters. At least one row tier and one column tier are required. RW.Adaptive.Option("AutoFormat", ...)controls whether Reportworq bolds the row and column labels and auto-fits the label columns.- The Adaptive result set is imported into
targetRange, and the formula cell is cleared on success. - During the Adaptive pass, modeled exports run first, and Extract runs afterwards, once the workbook's Adaptive specs have been expanded.
Keep the tier and option formulas in small, clearly labeled setup ranges and pass those ranges in. Control formatting and suppression through RW.Adaptive.Option rather than hard-coding it into the template.
Example
=RW.Adaptive.Extract(A1, Setup!B2:B6, Setup!D2:D4)
RW.Adaptive.Tier#
Defines one Adaptive tier for the row axis, column axis, or filter axis of an Extract.
Signature
=RW.Adaptive.Tier(axis, dimensionName, selections, [expansionType], [order])
| # | Argument | Type | Default | Meaning |
|---|---|---|---|---|
| 1 | axis |
String | required | row or rows; col, cols, column or columns; filter or filters. |
| 2 | dimensionName |
String | required | The Adaptive dimension, resolved by name in Adaptive metadata. |
| 3 | selections |
Range or string | required | The members for this tier. A single text value containing ; is split into multiple members. |
| 4 | expansionType |
String | "none" |
none, children, descendants, or leaf. |
| 5 | order |
Integer | 0 |
Sequences multiple tiers that share an axis. |
Behavior
- With
expansionType="none"at least one element must be supplied. - With
children,descendantsorleaf, the tier can expand from the members you supply or from the dimension root when no members are supplied. - Extract sorts row and column tiers by
orderbefore building the request. Put outer tiers at lowerordervalues and inner tiers at higher ones. - Use
leafwhen you want fully expanded leaf-level members rather than parents. - Use
filtersfor dimensions that should constrain the report without appearing as row or column labels.
Examples
=RW.Adaptive.Tier("rows", "Period", A1:A5)
=RW.Adaptive.Tier("columns", "Region", B1:B2, "children", 1)
=RW.Adaptive.Tier("filters", "Version", "Actual;Budget")
When an argument is wrong
| Situation | Result |
|---|---|
| Invalid axis name | The tier is not assigned to rows, columns or filters correctly. |
expansionType="none" with no selections |
Formula error. |
| A member name does not exist in the dimension | Report generation fails when the tier is expanded. |
RW.Adaptive.Option#
Defines an option that Extract reads when building the report.
Signature
=RW.Adaptive.Option(optionName, optionValue)
| # | Argument | Type | Meaning |
|---|---|---|---|
| 1 | optionName |
String | An option name such as "AutoFormat", "SuppressZeros" or "SuppressRollups". |
| 2 | optionValue |
String, Boolean or integer | The value stored with the option. |
Reportworq stores the value as text and also tries to parse it as a Boolean and as an integer. The formula cell displays optionName=optionValue.
Use SuppressRollups and SuppressZeros to shape the Adaptive request itself, rather than post-processing the result in Excel.
Examples
=RW.Adaptive.Option("AutoFormat", TRUE)
=RW.Adaptive.Option("SuppressZeros", 2)
=RW.Adaptive.Option("SuppressRollups", FALSE)
When an argument is wrong. A misspelled option name is silently unused by Extract, so an option that appears to have no effect is most often a typo. A numeric option whose value is text that cannot be parsed as an integer also fails quietly.
RW.Adaptive.Filter#
Stores a reusable Adaptive dimension filter: a dimension name and one or more member names.
Signature
=RW.Adaptive.Filter(dimensionName, memberNames)
| # | Argument | Type | Meaning |
|---|---|---|---|
| 1 | dimensionName |
String | The dimension to filter, such as "Version" or "Region". |
| 2 | memberNames |
Range, array or literal list | The members to keep. |
Literal lists and cell-based lists are both supported. The formula cell displays a dimension.members summary.
It defines filter values only. It does not render a report grid on its own; for the full row, column and filter layout use RW.Adaptive.Tier and RW.Adaptive.Extract.
Examples
=RW.Adaptive.Filter("Region", A1:A5)
=RW.Adaptive.Filter("Version", {"Actual","Plan"})
RW.Adaptive.Input#
Marks a cell as an Adaptive input and prepares it for upload during contribution processing.
Signature
=RW.Adaptive.Input(inputCell, [adaptiveSheetName], [tuplePart1], [tuplePart2], ...)
| # | Argument | Type | Default | Meaning |
|---|---|---|---|---|
| 1 | inputCell |
Cell reference | required | The cell whose value is uploaded. |
| 2 | adaptiveSheetName |
String | none | When supplied, the upload is treated as a cube account upload for that Adaptive sheet. When omitted, it is a standard account upload. |
| 3 and up | tuplePart |
String | optional | Explicit tuple coordinates in `Dimension |
Behavior
- Supply explicit tuple parts when you want the formula itself to define where the value is written. Leave them out when the generated workbook already carries the tuple map Reportworq created for that input cell during report generation.
- Processed during input submission, not the output pass. The formula cell is cleared on success.
Examples
=RW.Adaptive.Input(B5)
=RW.Adaptive.Input(B5, "CommissionSheet")
=RW.Adaptive.Input(B5, "CommissionSheet", "Version|Plan", "Period|2026-01", "Region|East")
When an argument is wrong
| Situation | Result |
|---|---|
inputCell is not a real cell reference |
Formula error during parsing. |
| A tuple part is not in `Dimension | Member` form |
| The referenced tuple cannot be found in workbook metadata | Submission fails for that input. |
RW.Adaptive.ModeledInput#
Updates a modeled Adaptive sheet by matching one key value and writing one modeled field value.
Signature
=RW.Adaptive.ModeledInput(version, adaptiveSheetName, importKeyName, importKeyValue, inputValueName, inputValue)
| # | Argument | Type | Meaning |
|---|---|---|---|
| 1 | version |
String | The Adaptive version to update. |
| 2 | adaptiveSheetName |
String | The modeled sheet to update. |
| 3 | importKeyName |
String | The key column used to find the row. |
| 4 | importKeyValue |
Value | The key value to match. |
| 5 | inputValueName |
String | The modeled field or column to update. |
| 6 | inputValue |
Value | The new value to write. |
All six arguments are required. The formula builds a small two-column modeled-data update request and sends it during input processing. The formula cell is cleared on success.
Use INDIRECT(...) when you copy the formula down repeated worksheet rows, so the references track the row rather than drifting.
Use RW.Adaptive.Input instead for standard or cube-account uploads that rely on tuple metadata.
Examples
=RW.Adaptive.ModeledInput($C$2, "CommissionSheet", "Employee_ID", A2, "Target_Commission", B2)
=RW.Adaptive.ModeledInput("2026_Plan", "Targets", "Region", INDIRECT("A" & ROW()), "Headcount", INDIRECT("B" & ROW()))
When an argument is wrong
| Situation | Result |
|---|---|
| Any required argument is blank | Formula error before submission. |
adaptiveSheetName does not match a modeled sheet |
Submission fails. |
| Used for normal tuple-based input cells | Use RW.Adaptive.Input instead. |
RW.Adaptive.ModeledExport#
Exports modeled Adaptive data into a worksheet range or named table.
Signature
=RW.Adaptive.ModeledExport(targetRange, version, [adaptiveSheetName], [startPeriod], [endPeriod], [levels], [includeDescendent], [isGlobal])
| # | Argument | Type | Default | Meaning |
|---|---|---|---|---|
| 1 | targetRange |
Range or table | required | Output location. |
| 2 | version |
String | required | The Adaptive version to export. |
| 3 | adaptiveSheetName |
String | none | Optional modeled sheet name. |
| 4 | startPeriod |
String | none | Optional start-period filter. |
| 5 | endPeriod |
String | none | Optional end-period filter. |
| 6 | levels |
String | none | A pipe-delimited level list such as `"Level1 |
| 7 | includeDescendent |
Boolean | FALSE |
Include descendant members. |
| 8 | isGlobal |
Boolean | FALSE |
Request a global export. |
Behavior
- The export can be written into a normal range or into a named Excel table. A table is useful when downstream formulas, filters or charts should grow with the result set.
- Modeled exports run before Extract during the Adaptive formula pass.
- If the export returns rows, the data is imported and the formula cell is cleared.
Examples
=RW.Adaptive.ModeledExport(A1, "ActualData")
=RW.Adaptive.ModeledExport(SalesTable, "PlanModel", "CommissionSheet", "2026-01", "2026-12")
=RW.Adaptive.ModeledExport(B5, "ForecastData", , , , "Level1|Level2", TRUE, FALSE)
When an argument is wrong
| Situation | Result |
|---|---|
| Invalid target range or table name | Formula error. |
levels separated by commas |
Not recognized. The implementation splits on ` |
| Omitting placeholder commas for skipped optional arguments | The later arguments are read into the wrong positions. See the third example. |
Use cases#
- Adaptive custom report.
RW.Adaptive.Tierformulas define Period rows and Region columns,RW.Adaptive.Option("SuppressZeros", TRUE)trims the empties, andRW.Adaptive.Extractrenders the grid for a monthly management pack. - Modeled forecast package.
RW.Adaptive.ModeledExportpulls a modeled sheet into a table for a forecast workbook, and after reviewRW.Adaptive.ModeledInputwrites the revised targets back. - Commission upload.
RW.Adaptive.Inputmarks the commission cells for cube-account upload during a contribution round.
Notes and limits#
- The functions are inert in desktop Excel. They only run inside a Reportworq job or form submission.
- Extract needs at least one row tier and one column tier.
- Remember the naming trap: the
AI*aliases are Adaptive functions, not AI.
Related pages#
- Functions overview: which one do I use
- General report and layout functions for the layout functions that run alongside an Extract.
- The AI insight function for the genuinely generative one.
- Connector catalog for the Adaptive connection setup.
Feedback on this page
Comments, questions, requests, or something missing or unclear? Email us - the page you are on is filled in for you.
Email feedback on this pageOr write to support@reportworq.com directly.