On 11/29/12 1:23 AM, John English wrote:
On 28/11/2012 23:31, Rick Hillegas wrote:
Hi John,
You may be able to press user-defined aggregates into service here. They
are a new feature available in the development trunk and slated for
release 10.10 next year. To demonstrate how to do this, I'm enclosing an
ij script plus two Java classes which support the script.
Hmm, looks interesting!
Hope this helps,
Me too, but I need to spend some time digesting your example...
A couple notes so that the examples make more sense:
1) A pivot table is a lot like a grouped aggregate. Rows with a common
key end up being grouped together into a single composite row.
2) More information on user-defined aggregates can be found in the
section titled "Programming user-defined aggregates" here:
http://db.apache.org/derby/docs/dev/devguide/
3) This user-defined aggregate operates on two user-defined types. The
types probably deserve better names.
4) The first type (NamedInt) represents what will end up being a column
in the result row. The NamedInt binds a column name to an int value.
5) The second type (HashMap) is just a bag of these columns. It ends up
being the contents of the pivoted row.
6) Some user-defined functions have to be created in order to create and
inspect the user-defined types.
7) The NamedIntAggregator is passed a stream of columns, which it puts
into the result row.
8) The query at the end of the ij script puts it all together: The inner
query constructs the result rows, but they are represented as HashMaps.
The outer query unpacks the HashMaps into displayable rows.
Hope this is useful,
-Rick
Many thanks for this,