Writers

ID Name Produces

console

Console Outline Writer

An indented text hierarchy printed to stdout

all-properties

All Properties File Writer

A diagnostic dump of every member property, to stdout

essbase-xml-writer

Essbase XML Writer

Essbase outline XML

documentation

Documentation Text Writer

A configurable, spreadsheet-friendly CSV per dimension

load-file

Load File Text Writer

A parent/child CSV per dimension, for Essbase load rules

generation-file

Generation Text Writer

A generation-build ancestor-path file per dimension, for Essbase load rules

level-file

Level Text Writer

A level-build ancestor-path file per dimension, for Essbase load rules

jdbc

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:

Condensed (default)

All of a member’s UDAs joined into one column (udas-condense-delimiter controls the join character, default ;)

All

One column per unique UDA used anywhere in the dimension, present only where a member actually has it (load-file caps this at udas-max columns, default 5)

Stacked

A fixed number of columns (udas-max, default 5) filled positionally from each member’s own UDA list

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

print-output

Boolean

No

true

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

file-path

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

file-path

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

output-directory

String

Yes

Directory to write one documentation file per dimension into

filename-pattern

String

No

${server}.${application}.${cube}.${prefix}.${dimension}

Filename pattern - see Shared conventions

file-prefix

String

No

Documentation

Used for the ${prefix} filename pattern token

file-extension

String

No

csv

File extension, without the leading dot

delimiter

String

No

,

Field delimiter (first character is used)

include-headers

Boolean

No

false

Write a header row naming each column

parent

Boolean

No

false

Include the Parent column

description

Boolean

No

false

Include the Description column

output-formula

Boolean

No

false

Include the Formula column

storage

Boolean

No

false

Include the Data Storage column

consolidation

Boolean

No

false

Include the Consolidation column

generation

Boolean

No

false

Include the Generation column

level

Boolean

No

false

Include the Level column

child-count

Boolean

No

false

Include the Child Count column

time-balance

Boolean

No

false

Include the Time Balance column

time-balance-skip

Boolean

No

false

Include the Time Balance Skip column

two-pass

Boolean

No

false

Include the Two Pass column

variance-reporting

Boolean

No

false

Include the Variance Reporting column

level-usage-for-aggregation

Boolean

No

false

Include the Level Usage for Aggregation column (ASO outlines only)

solve-order

Boolean

No

false

Include the Solve Order column

alias-tables

Boolean

No

false

Include one column per alias table defined on the outline

indent-generations

Boolean

No

false

Prefix the member name with repeated indent text per generation, instead of/alongside a Parent column

indent-generations-text

String

No

a tab character

The text repeated once per generation of depth when indent-generations is on

output-udas

Boolean

No

false

Include the member’s UDAs, laid out per udas-handler

udas-handler

String

No

Condensed

UDA output representation - All, Stacked, or Condensed (Shared conventions)

udas-max

Integer

No

5

Number of UDA columns to write when udas-handler is Stacked

udas-condense-delimiter

String

No

;

Delimiter used to join UDAs into one column when udas-handler is Condensed

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

output-directory

String

Yes

Directory to write one load file per dimension into

filename-pattern

String

No

${server}.${application}.${cube}.${prefix}.${dimension}

Filename pattern - see Shared conventions

file-prefix

String

No

LoadFile

Used for the ${prefix} filename pattern token

file-extension

String

No

txt

File extension, without the leading dot

delimiter

String

No

,

Field delimiter (first character is used)

include-headers

Boolean

No

false

Write a header row naming each column

parent

Boolean

No

false

Include the parent-member column(s)

child

Boolean

No

false

Include the child-member column

description

Boolean

No

false

Include the Description column

output-formula

Boolean

No

false

Include the Formula column

consolidation

Boolean

No

false

Include the Consolidation column

storage

Boolean

No

false

Include the Data Storage column

time-balance

Boolean

No

false

Include the Time Balance column

two-pass

Boolean

No

false

Include the Two Pass column

variance-reporting

Boolean

No

false

Include the Variance Reporting column

solve-order

Boolean

No

false

Include the Solve Order column

level-usage-for-aggregation

Boolean

No

false

Include the Level Usage for Aggregation column (ASO outlines only)

alias-tables

Boolean

No

false

Include one column per alias table defined on the outline

output-udas

Boolean

No

false

Include the member’s UDAs, laid out per udas-handler

udas-handler

String

No

Condensed

UDA output representation - All, Stacked, or Condensed (Shared conventions)

udas-max

Integer

No

5

Maximum number of UDA columns to write when udas-handler is All

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

output-directory

String

Yes

Directory to write one generation file per dimension into

filename-pattern

String

No

${server}.${application}.${cube}.${prefix}.${dimension}

Filename pattern - see Shared conventions

file-prefix

String

No

GenFile

Used for the ${prefix} filename pattern token

file-extension

String

No

txt

File extension, without the leading dot

delimiter

String

No

,

Field delimiter (first character is used)

include-headers

Boolean

No

false

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

output-directory

String

Yes

Directory to write one level file per dimension into

filename-pattern

String

No

${server}.${application}.${cube}.${prefix}.${dimension}

Filename pattern - see Shared conventions

file-prefix

String

No

LevFile

Used for the ${prefix} filename pattern token

file-extension

String

No

txt

File extension, without the leading dot

delimiter

String

No

,

Field delimiter (first character is used)

include-headers

Boolean

No

false

Write a header row naming each column

alias-tables

Boolean

No

false

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

jdbcUrl

String

No

JDBC URL for a non-embedded database; ignored when embedded=true

embedded

Boolean

No

false

Use an on-disk embedded H2 database instead of jdbcUrl - just enable this and go

deployTables

Boolean

No

false

Deploy the relational schema before writing; always on when embedded=true

dumpToFile

Boolean

No

false

Also write the just-written table rows to a text file, for reviewing without a SQL tool

username

String

No

Defaults to H2’s own default (sa) when embedded=true

password

String

No

Defaults to H2’s own default (blank) when embedded=true

server

String

No

Falls back to the extracted outline’s server, if the extractor knows it

application

String

No

Falls back to the extracted outline’s application, if the extractor knows it

cube

String

No

Falls back to the extracted outline’s cube, if the extractor knows it