-----------
**Added**
pygrametl's existing set of unit tests. By default, the unit tests are executed
against an in-memory SQLite database so no configuration is needed.
``SQLTransformingSource`` a new class supporting transformation of rows by loading
them into a temporary table in an RDBMS and then retrieving them using an SQL
query.
``SlowlyChangingDimension.lookupasof`` which can be used to lookup the version of a
member that was valid at a given time.
**Changed**
Beginner guide updated and dataset added to it.
If a ``rowexpander`` does not return a row in the form of a ``dict``,
``Dimension.ensure`` now explicitly raises a ``TypeError`` with the name of
the function set as the ``rowexpander``.
``ymdhmsparser`` can now handle ``datetime.datetime`` as input. Any other
input is cast to a string. (GitHub issue 40)
``ymdparser`` can now handle ``datetime.datetime`` and ``datetime.date`` as
input. Any other input is cast to a string. (GitHub issue 40)
If ``orderingatt`` is not specified for a ``SlowlyChangingDimension``,
``fromatt`` will now be used if ``versionatt`` are ``toatt`` not specified.
When using ``fromatt`` or ``toatt`` as ``orderingatt``, the generated SQL
will specify NULLS FIRST or NULLS LAST. Before this change, NULLS FIRST was
assumed for ORDER BY DESC, but this is not guaranteed to hold for all
DBMSs. The change thus requires the used DBMS to support that NULLS FIRST or
NULLS LAST is specified in the generated SQL.
**Fixed**
``BulkFactTable.__init__`` now sets the attributes ``keyrefs``, ``measures``,
and ``all``. These attributes are required by the ``FactTablePartitioner``.
``BulkFactTable`` constructed with ``usemultirow=True`` (the default is
``False``) can now load rows containing ``NULL`` values. (GitHub issue 50)
Incorrect quotation of identifiers in ``SlowlyChangingDimension`` fixed.
Missing key value of root when calling ``getbykey`` of ``SnowflakedDimension`` fixed.
Added explicit commit and rollback to fix problems with hanging DTT.