10 Commits
Author SHA1 Message Date
allan 428e8e7fa1 Merge pull request 'docs(va): in-report screenshots for the mapping and the banner' (#30) from docs/va-in-report-images into main
Publish to docs.datacontroller.io / Deploy docs (push) Successful in 1m4s
Reviewed-on: #30
2026-10-29 14:38:26 +00:00
dc c7bbdee3c6 docs(va): in-report screenshots for the mapping and the banner
Both images on the embed page were still captured from a local sandbox with the
editor as the top-level document, so neither showed the report around it.

- va-parmap-filtered.png: the report viewer, prompt DROPDOWN_TAB1 (relabelled on
  the report, not matching any column) and SOME_DATE, with
  FILTER : ( ( SOME_DROPDOWN = 'Option 1' AND SOME_DATE = '01JUL1960'd ) ) over
  21 rows - the mapped parameter filtering a column that is not its name
- va-parmap-banner.png: the same object with a malformed entry
  (va_parmap=SOME_DATE, no hyphen), showing the warning banner over a populated,
  filtered grid

The caption for the mapping now says the date parameter beside it is
name-matched, which is what the picture shows.

va-parmap-transform.png is removed rather than replaced: the deployment used for
these captures predates the ADD/RANGE work, so there is no honest in-report
picture of a date anchor to take, and a sandbox capture would be the one image on
the page without the report around it. The section keeps the syntax, the anchors
and the examples table.
2026-10-29 14:25:32 +00:00
dc b20c3f3507 docs(va): filter shot with rows to see, and no wrapperless crop
Captured from the report viewer at 1920x1100: two prompts (a value list and a
date), 21 rows returned by
FILTER : ( ( SOME_DROPDOWN = 'Option 1' AND SOME_DATE = '01JUL1960'd ) ).

- drops the header/FILTER crop, which had no VA chrome, and the sentence it
  illustrated
- drops the "single row it matches" wording, which no longer describes the
  picture
- documents the date clause as a code block instead of a second image
2026-10-29 14:05:23 +00:00
allan 86eab571c0 Merge pull request 'docs(va): two-parameter report shot with a date literal' (#29) from docs/va-report-screenshots into main
Publish to docs.datacontroller.io / Deploy docs (push) Successful in 1m6s
Reviewed-on: #29
2026-10-29 13:26:13 +00:00
dc f803656936 docs(va): two-parameter report shot with a date literal
Replaces the three-parameter screenshot with a two-parameter one - a value
list and a date - and adds a zoomed crop of the DC header and FILTER line.

The date parameter arrives as a display date and is rendered as a SAS date
literal ('12FEB1960'd), the same as a date filter built inside Data
Controller. That is worth showing because VA's own prompt containers in the
report header show only the parameter label: the FILTER line is where the
selected values are legible.
2026-10-29 13:14:15 +00:00
allan bd736bc91c Merge pull request 'docs(va): show Data Controller inside a real VA report' (#28) from docs/va-report-screenshots into main
Publish to docs.datacontroller.io / Deploy docs (push) Successful in 1m6s
Reviewed-on: #28
2026-10-29 12:59:06 +00:00
dc 5d9a133261 docs(va): show Data Controller inside a real VA report
Adds the two screenshots the embed page was missing, both captured from a
Viya deployment with Data Controller embedded as a data-driven content
object:

- three report parameters (SOME_CHAR, SOME_DROPDOWN, SOME_NUM) reaching one
  object, with the combined FILTER line and the single matching row in the
  editor
- the object's Options pane, showing the URL as a Web Content property
  rather than a data source

Also documents two things that make an embedded object look broken when the
deployment is fine: the URL is an object property and the object needs no
data assigned, and an unlicensed / not yet accepted deployment shows its
licensing screen inside the object.  The debugging section now says the
parameter label in the postMessage payload is the key va_parmap matches.
2026-10-29 12:52:26 +00:00
allan 6af8d77d80 Merge pull request 'docs(va): move the embed page to /visual-analytics, redirect the old path' (#27) from docs/visualanalytics into main
Publish to docs.datacontroller.io / Deploy docs (push) Successful in 1m22s
Reviewed-on: #27
2026-10-29 10:36:01 +00:00
dc 8839ebd8ce docs(va): use /visual-analytics/ for the embed page
The route is hyphenated like the other multi-word docs paths (dcc-*, pre-edit-hook).
The page has not been published under /visualanalytics/, so only the embed-va
redirect map needs to point at the final path.
2026-10-29 10:35:44 +00:00
dc 3435c17c26 docs(va): move the embed page to /visualanalytics
- rename docs/embed-va.md -> docs/visualanalytics.md, so the page is served
  at /visualanalytics/
- redirect the old /embed-va/ path to the new one
- point the three inbound links (index, filter, deploy-viya) at the new path
- fill in og_title and og_image so link previews carry the page title and a
  card image instead of the site defaults
- the object's author often has elevated permissions, not usually an admin
2026-10-29 10:29:07 +00:00
11 changed files with 29 additions and 12 deletions

No files matched your search

+1 -1
View File
@@ -175,4 +175,4 @@ It is possible to embed a Data Controller table within SAS Visual Analytics by s
To make the portlet more visually appealing, the Data Controller title bar can be removed by adding `?embed=true` to the URL. When opening in a new window, the title bar will be gone.
For a deeper VA integration - where report row selections drive filters and column visibility in the Data Controller editor - append `?embed=va` instead. See the [SAS Visual Analytics Embed](/embed-va/) page for details on filter modes, configuration, and debugging.
For a deeper VA integration - where report row selections drive filters and column visibility in the Data Controller editor - append `?embed=va` instead. See the [SAS Visual Analytics Embed](/visual-analytics/) page for details on filter modes, configuration, and debugging.
+1 -1
View File
@@ -7,7 +7,7 @@ og_image: https://docs.datacontroller.io/img/filter_dynamic_on.png
# Filtering
Data Controller for SAS® enables you to create complex table filters. The "dynamic" setting enables the dropdown values to be pre-filtered by previous filter clauses. Filtered views are shareable! They are also used when [embedded in VA.](/embed-va)
Data Controller for SAS® enables you to create complex table filters. The "dynamic" setting enables the dropdown values to be pre-filtered by previous filter clauses. Filtered views are shareable! They are also used when [embedded in VA.](/visual-analytics/)
The clause shown above the grid is the resolved WHERE clause that was applied, so it uses SAS syntax - a date, datetime or time filter reads as a SAS literal, eg `SOME_DATE = '20APR2042'd`, rather than the internal day or second count.
Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 KiB

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

+1 -1
View File
@@ -42,7 +42,7 @@ Data Controller is regularly updated with new features. If you see something th
* [Row Level Security](/row-level-security)
* Excel [formula support](excel)
* Dynamic [cell dropdown](/dynamic-cell-dropdown)
* [SAS Visual Analytics embed](/embed-va/) - drive the editor from VA report selections
* [SAS Visual Analytics embed](/visual-analytics/) - drive the editor from VA report selections
* Works on ALL flavours of SAS (Base, EBI, Viya)
+24 -8
View File
@@ -1,7 +1,9 @@
---
layout: article
title: SAS Visual Analytics Embed
description: Embed the Data Controller editor inside a SAS VA report as a data-driven content object. Row selections in the VA report drive filters and column visibility in the editor.
description: Embed the Data Controller editor inside a SAS Visual Analytics report as a data-driven content object, so report selections drive filters and column visibility in the editor.
og_title: Embedding Data Controller in SAS Visual Analytics
og_image: https://docs.datacontroller.io/img/va-embed-og.png
---
# Embedding inside SAS Visual Analytics
@@ -48,6 +50,10 @@ VA pushes a JSON payload to the iframe via `window.postMessage` whenever the sel
If VA sends an empty / unmatched message the editor falls back to the unfiltered view but stays in VA mode.
In the report below, two report parameters - `SOME_DROPDOWN` and `SOME_DATE` - reach one Data Controller object, and the editor shows both the combined filter and the rows it matches:
![A value and a date parameter filtering the embedded editor](img/va-report-filters.png)
More logic available in [`va-messaging.service.ts`](https://git.datacontroller.io/dc/dc/src/branch/main/client/src/app/services/va-messaging.service.ts).
## Mapping parameters to columns
@@ -67,7 +73,7 @@ Repeat the parameter to add mappings. A report with two tabs, each holding its
| Tab 1 | `...?embed=va&va_parmap=REGION_TAB1-REGION` |
| Tab 2 | `...?embed=va&va_parmap=REGION_TAB2-REGION` |
The applied filter is visible in the editor, above the grid - here the parameter `DROPDOWN_TAB1` filtering `SOME_DROPDOWN`, which is not its name:
The applied filter is visible in the editor, above the grid - here the parameter `DROPDOWN_TAB1` filtering `SOME_DROPDOWN`, which is not its name (the date parameter beside it is name-matched, which is the default):
![A va_parmap mapping filtering a column](img/va-parmap-filtered.png)
@@ -114,11 +120,7 @@ A mapping can resolve the parameter value through a **named date anchor** before
https://yourserver/DC/#/editor/<library>/<table>?embed=va&va_parmap=SELECTED_DATE-D_DATE:ADD(QUARTER_START,-1)
```
A report that sends `SELECTED_DATE = 27FEB1961` then filters `D_DATE` on 1961-02-27 **and** 1960-10-01 - the selected date, plus the same point one quarter earlier:
In the screenshot below the mapping is `SELECTED_DATE-SOME_DATE:ADD(QUARTER_START,-1)` against the demo table, and the parameter sends 27FEB1961:
![A date anchor applied to the filter](img/va-parmap-transform.png)
A report that sends `SELECTED_DATE = 27FEB1961` then filters `D_DATE` on 1961-02-27 **and** 1960-10-01 - the selected date, plus the same point one quarter earlier.
The clause carries both values, so the row for the selected date and the row for the previous quarter are both included.
@@ -166,6 +168,10 @@ The mapping lives entirely in the URL of the report object, so the job is to get
Everything before the `#` is the normal deployment URL; the `#/editor/...` part is the DC route, and `?embed=va` plus the `va_parmap` entries are what this page describes. One object per report tab, each with its own entry, is what lets two tabs filter the same column differently.
The URL is a property of the object, not a data source: it lives in **Options > Web Content > URL**, and the object needs no data assigned for Data Controller to open its own table. In the designer that section looks like this (the field is scrolled to the end of a long URL):
![The Web Content URL property on a Data-driven content object](img/va-report-object-options.png)
3. **Make the parameter reach the object.** VA sends an object only the parameters its query uses. A report parameter that the object's data does not reference never arrives, and the mapping then has nothing to map - DC reports it as `VA is not sending ...` in the banner. So bind the parameter into the object (assign it as a source on the object's query, as you would for any other visual), rather than only defining it at report level.
4. **Save the report**, then open it. DC shows the applied filter above the grid, so a correct mapping is visible without opening the editor:
@@ -174,6 +180,12 @@ The mapping lives entirely in the URL of the report object, so the job is to get
FILTER : ( ( REGION = 'Europe' ) )
```
A date parameter arrives as a display date and is rendered as a SAS date literal, the same as a date filter built inside Data Controller:
```text
FILTER : ( ( SOME_DROPDOWN = 'Option 1' AND SOME_DATE BETWEEN '01JAN1960'd AND '31MAR1960'd ) )
```
Something wrong shows the banner instead, with the cause and the fix - see [When a mapping cannot be used](#when-a-mapping-cannot-be-used) above.
!!! note
@@ -183,7 +195,9 @@ The mapping lives entirely in the URL of the report object, so the job is to get
The object runs as the person **viewing** the report, using their SAS identity - there is no service account behind it. That person must therefore be a registered Data Controller user: if they are not, DC shows its login card inside the object instead of the editor, which looks like a broken embed rather than a permissions matter.
Register everyone who will open the report before you ship it (Users in DC), and test the report as one of them rather than as the person who built it - the author is usually an administrator, so a report that works for them can fail for everyone else.
Register everyone who will open the report before you ship it (Users in DC), and test the report as one of them rather than as the person who built it - the author often has elevated permissions, so a report that works for them can fail for everyone else.
The deployment itself has to be licensed and past its End User License Agreement before it is embedded, for the same reason: an unlicensed instance shows the licensing screen (the agreement, then the free tier until a key is uploaded) inside the object, which reads as a broken embed rather than as setup that was never finished. Accept the agreement and register the key by opening the deployment directly, then reload the report.
## Debugging
@@ -194,3 +208,5 @@ The following snippet can be used in console to dump the values being provided t
```
console.log(JSON.stringify(window.__vaLastMessage?.data, null, 2))
```
Each entry in its `parameters` array carries a `label`, and that label is what a `va_parmap` entry has to match (and what the name match uses when there is no entry). When a mapping appears to do nothing, compare the labels in this dump with the left-hand side of the entries in the object's URL - a parameter that VA labels differently from what was typed in the URL is silently a different parameter.
+2 -1
View File
@@ -73,7 +73,7 @@ nav:
- Selectboxes: dcc-selectbox.md
- Tables: dcc-tables.md
- Validations: dcc-validations.md
- Visual Analytics: embed-va.md
- Visual Analytics: visual-analytics.md
- Macros: macros.md
- Installation:
- System Requirements: dci-requirements.md
@@ -113,6 +113,7 @@ plugins:
redirect_maps:
'dci-evaluation.md': 'dci-deploysas9.md'
'dcu-fileupload.md': 'files.md'
'embed-va.md': 'visual-analytics.md'
# Repository
repo_name: 'dc/docs.datacontroller.io'