Multidimensional Analysis of Financial Data

Our BookSet and Transaction classes can be thought of as classifying amounts of money by time and by account—a 2D classification. In fact, many standard financial reports follow a format of months across the top, and accounts (drawn from some level of the tree) down the left. Previously, we saw how to extend the system to add any attributes we wish. This effectively makes it a multidimensional model. Analyzing multidimensional data is a big business currently using the buzzword OLAP (online analytical processing). Furthermore, a common problem is to ensure the integrity of the double-entry while querying and selecting subsets of data. There is almost have a data warehouse in our BookSet; however, it’s currently optimized for adding, editing, and deleting transactions, not for querying.

To query the BookSet , flatten the transactions into a separate list of facts per line. Taking the sales transaction earlier, you might extract something like what’s in Table 6.1.

Table 6.1. Multidimensional Analysis of Accounts

Date

Account

Customer

Project

Amount

27-Apr-1999

...Income.Consulting

HugeCo

P1

-15000

27-Apr-1999

...Income.Consulting

HugeCo

P2

-10000

27-Apr-1999

...Creditors

HugeCo

(none)

25000

This kind of fact-table structure is as easy to analyze in Python as it is in SQL. However, Python has a big advantage over the database world in that it’s not tied to particular sets of facts, or column headings, beforehand. Transactions ...

Get Python Programming On Win32 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.