Writers
| ID | Name | Produces |
|---|---|---|
|
Console Outline Writer |
An indented text hierarchy printed to stdout |
|
All Properties File Writer |
A diagnostic dump of every member property, to stdout |
|
Essbase XML Writer |
Essbase outline XML |
|
Documentation Text Writer |
A configurable, spreadsheet-friendly CSV per dimension |
|
Load File Text Writer |
A parent/child CSV per dimension, for Essbase load rules |
|
Generation Text Writer |
A generation-build ancestor-path file per dimension, for Essbase load rules |
|
Level Text Writer |
A level-build ancestor-path file per dimension, for Essbase load rules |
|
JDBC Writer |
Relational tables (embedded H2, or any JDBC URL) |
Run describe-providers (Discovering providers) at any time
for the authoritative, exact property list per writer - the tables below are current as of this
manual’s printing, but the command is always live.
Shared conventions
documentation, load-file, generation-file, and level-file all write one file per dimension
into a directory you specify (output-directory), named from a shared, token-substituted pattern
(filename-pattern, default ${server}.${application}.${cube}.${prefix}.${dimension}). Any token
left blank (e.g. no server on the outline) is dropped cleanly rather than leaving an ugly gap in the
filename. file-prefix fills in the ${prefix} token (each writer has its own default - see its
own table below); file-extension sets the file extension; delimiter controls the field separator
(default ,).
documentation and load-file additionally let you toggle individual output columns on or off -
see Standard member properties for what
each one actually means. Both support three ways of handling UDAs when
output-udas/udas-handler is enabled:
|
All of a member’s UDAs joined into one column ( |
|
One column per unique UDA used anywhere in the dimension, present only where a member actually has it ( |
|
A fixed number of columns ( |
Console Outline Writer
Needs no configuration at all - point any extractor at it and the outline prints straight to stdout as an indented hierarchy. The fastest way to sanity-check an extractor’s output without writing anything to disk.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
|
Boolean |
No |
|
Prints the outline to stdout when on; does nothing at all when off - turn it off to use this as a no-op writer, e.g. when the only reason to run is to look at the extracted outline elsewhere |
All Properties File Writer
A diagnostic tool: dumps every property every member has (Standard member properties), for whichever extractor you paired it with, to stdout.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
|
String |
Yes |
Not currently used - output always goes to stdout regardless of what you set it to |
Essbase XML Writer
Writes Essbase outline XML - the same format essbase-xml (the extractor) reads back in, which
makes the pair useful for round-tripping an outline through a local file: consolidation, data
storage, time balance, formula, shared/two-pass/variance-reporting flags, and UDAs all survive the
trip. Alias table names are written too (so essbase-xml’s `alias-tables filter still has
something to filter). SampleBasicRoundTripTest (in ngoe-extractor-essbase-xml) exercises all of
this against a real Sample.Basic export, dimension by dimension and member by member. See
What doesn’t round-trip yet for the two
things that still don’t.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
|
String |
Yes |
Path to the file to write |
Documentation Text Writer
The most configurable of the file writers: a spreadsheet-friendly CSV per dimension, with every
output column optional and UDA handling built in (Shared conventions). indent-generations
prefixes the member name with repeated indent text (indent-generations-text, default a tab) based
on generation depth, so the hierarchy is visible at a glance without a separate Parent column.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
|
String |
Yes |
Directory to write one documentation file per dimension into |
|
|
String |
No |
|
Filename pattern - see Shared conventions |
|
String |
No |
|
Used for the |
|
String |
No |
|
File extension, without the leading dot |
|
String |
No |
|
Field delimiter (first character is used) |
|
Boolean |
No |
|
Write a header row naming each column |
|
Boolean |
No |
|
Include the |
|
Boolean |
No |
|
Include the |
|
Boolean |
No |
|
Include the |
|
Boolean |
No |
|
Include the |
|
Boolean |
No |
|
Include the |
|
Boolean |
No |
|
Include the |
|
Boolean |
No |
|
Include the |
|
Boolean |
No |
|
Include the |
|
Boolean |
No |
|
Include the |
|
Boolean |
No |
|
Include the |
|
Boolean |
No |
|
Include the |
|
Boolean |
No |
|
Include the |
|
Boolean |
No |
|
Include the |
|
Boolean |
No |
|
Include the |
|
Boolean |
No |
|
Include one column per alias table defined on the outline |
|
Boolean |
No |
|
Prefix the member name with repeated indent text per generation, instead of/alongside a Parent column |
|
String |
No |
a tab character |
The text repeated once per generation of depth when |
|
Boolean |
No |
|
Include the member’s UDAs, laid out per |
|
String |
No |
|
UDA output representation - |
|
Integer |
No |
|
Number of UDA columns to write when |
|
String |
No |
|
Delimiter used to join UDAs into one column when |
Load File Text Writer
A parent/child CSV per dimension, shaped for Essbase load rules rather than for reading: every
non-leaf ancestor gets its own Parent/Child column pair rather than one flat Parent column.
Shares the same filename and UDA-handling conventions as Documentation Text Writer
(Shared conventions).
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
|
String |
Yes |
Directory to write one load file per dimension into |
|
|
String |
No |
|
Filename pattern - see Shared conventions |
|
String |
No |
|
Used for the |
|
String |
No |
|
File extension, without the leading dot |
|
String |
No |
|
Field delimiter (first character is used) |
|
Boolean |
No |
|
Write a header row naming each column |
|
Boolean |
No |
|
Include the parent-member column(s) |
|
Boolean |
No |
|
Include the child-member column |
|
Boolean |
No |
|
Include the |
|
Boolean |
No |
|
Include the |
|
Boolean |
No |
|
Include the |
|
Boolean |
No |
|
Include the |
|
Boolean |
No |
|
Include the |
|
Boolean |
No |
|
Include the |
|
Boolean |
No |
|
Include the |
|
Boolean |
No |
|
Include the |
|
Boolean |
No |
|
Include the |
|
Boolean |
No |
|
Include one column per alias table defined on the outline |
|
Boolean |
No |
|
Include the member’s UDAs, laid out per |
|
String |
No |
|
UDA output representation - |
|
Integer |
No |
|
Maximum number of UDA columns to write when |
Generation Text Writer
Writes one generation-build ancestor-path file per dimension - each member’s full ancestor path, one column per generation - for Essbase load rules that build by generation rather than by parent/child pairs.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
|
String |
Yes |
Directory to write one generation file per dimension into |
|
|
String |
No |
|
Filename pattern - see Shared conventions |
|
String |
No |
|
Used for the |
|
String |
No |
|
File extension, without the leading dot |
|
String |
No |
|
Field delimiter (first character is used) |
|
Boolean |
No |
|
Write a header row naming each column |
Level Text Writer
Writes one level-build ancestor-path file per dimension - the level-based counterpart to Generation Text Writer, for Essbase load rules that build by level.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
|
String |
Yes |
Directory to write one level file per dimension into |
|
|
String |
No |
|
Filename pattern - see Shared conventions |
|
String |
No |
|
Used for the |
|
String |
No |
|
File extension, without the leading dot |
|
String |
No |
|
Field delimiter (first character is used) |
|
Boolean |
No |
|
Write a header row naming each column |
|
Boolean |
No |
|
Include one column per alias table defined on the outline |
JDBC Writer
Set embedded: true for the easiest path: an on-disk H2 database under ~/.ngoe/h2 (override the
directory with the ngoe.h2.dir system property), using H2’s own default credentials, with the
schema deployed automatically on first use - no other configuration required. For anything else,
set jdbcUrl (plus username/password) to point at a real database, and set deployTables: true
on the very first run against it - see Bringing Your Own JDBC Driver if that
database isn’t H2.
server/application/cube fall back to whatever the extractor carried on the outline if the
writer doesn’t set them itself
(Server/application/cube
propagation) - so for a typical Essbase-or-PBCS extraction followed by a relational write, you
generally don’t need to set them on the writer at all.
Set dumpToFile: true to also write everything just written to a plain-text file alongside the
database - a quick way to eyeball what actually landed in the tables without opening a SQL client.
Multiple extraction runs against the same source accumulate as separate versions in the same tables rather than overwriting each other; JDBC Extractor is what reads them back out.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
|
String |
No |
JDBC URL for a non-embedded database; ignored when |
|
|
Boolean |
No |
|
Use an on-disk embedded H2 database instead of |
|
Boolean |
No |
|
Deploy the relational schema before writing; always on when |
|
Boolean |
No |
|
Also write the just-written table rows to a text file, for reviewing without a SQL tool |
|
String |
No |
Defaults to H2’s own default ( |
|
|
String |
No |
Defaults to H2’s own default (blank) when |
|
|
String |
No |
Falls back to the extracted outline’s server, if the extractor knows it |
|
|
String |
No |
Falls back to the extracted outline’s application, if the extractor knows it |
|
|
String |
No |
Falls back to the extracted outline’s cube, if the extractor knows it |