Wednesday 15 February 2012

BI Publisher Locale, Dates, Numbers, and Bursting.

So you want to use BI Publisher 10.3.1.4 Enterprise and its bursting functionality.
(The bursting functionality lets you split a single generation of a report into lots of little reports /  documents. Think something like sending the whole day's data at once and having it broken down into a PDF per customer.)
Anyway, you can make a BI Publisher report multi-lingual, so to speak, by producing translations files for the template (I seem to recall they're called XLFs).  So, you know, pass "de_DE" and the template will display your labels in German, pass "en_GB" for British English and "en_US" for American.
I'm going to assume that most people know that Americans use a MM/DD/YY format for dates while we Brits use DD/MM/YY.  BI Publisher, when given a locale, pretty much handles those locale-based differences automatically when you generate a report.

However:
To use bursting functionality you have to schedule the job (through the GUI or using the scheduleReport element in the web-services).
When you're bursting, you use a query defined in the report that works out the "split by" information.  One of the fields the query returns is the locale.
However, when you schedule a report request, you also get to specify a locale.
Now the insane bit is this:
BI Publisher chooses the *language* in which to produce the individual document from the locale selected in the query;   BI Publisher chooses the *date formats* and *number formats* to use from the locale you use when you submit the schedule job request!

So you can produce German, British and American language documents from a single report request using bursting  -  but they all share the same date / number format.  Nice!