Address Component Problems
Overview
Provides information on how to address MonetDB and other problems.
The resolution for several common component problems appear in the following sections.
Troubleshooting MonetDB for Instaview
Instaview loads ETL models, dimensional schema, and data in a MonetDB-based database. When a new Instaview project is created or an existing one is opened, the MonetDB server is started. Most issues that can occur relate to the way that Pentaho controls MonetDB.
Connection Errors
Connection errors sometimes occur if there are MonetDB port conflicts. This sometimes occurs if you have installed Instaview in the past using one method, then reinstalled it using a different method. Check the share.xml file and modify the MonetDB port number in the Agile BI section so that it is not 50000, but another number such as 50006. Exit from Instaview and Spoon and try to start them both again.
General Errors
The Monetdb server is started when a new Instaview project is created or an existing one is opened. The server is shutdown when the project is closed. Pentaho provides scripts to start and stop the server. These scripts are located in the data-integration/plugins/spoon/agile-bi/platform/pentaho-solutions/system/instaview/scripts directory.
For testing or debugging, these scripts can be run with no arguments passed in. However, defaults are used for parameters that are not passed in. Each operating system has different defaults, the configuration definitions in the previous examples drive the values passed in to these scripts when executed from within PDI/Instaview. When running the scripts, take care to pass in the correct values, otherwise the database may not start up properly. Open the script in a text editor before calling it to determine what parameters you might need. Here are some example paramaters. None of the parameters are required, but are key if you stray from the default configurations.
For Windows
startMonetDb.bat DB_NAME MONETDB_INSTALL_DIR
Parameter | Default Value |
---|---|
DB_NAME | pentaho-instaview |
MONETDB_INSTALL_PATH | MONETDB_INSTALL_DIR environment variable |
For Mac or Linux
./startMonetDb.sh DB_NAME DB_FARM_LOCATION MONETDB_CMD MONETDBD_CMD MONETDB_PORT PASSPHRASE
Parameter | Mac Default Value | Linux Default Value | Comment |
---|---|---|---|
DB_NAME | pentaho-instaview | ||
DB_FARM_LOCATION | $HOME/.kettle/instaview/dbfarm | $HOME/.kettle/instaview/dbfarm | |
MONETDB_CMD | /usr/local/monetdb/bin/monetdb | /usr/bin/monetdb | |
MONETDBD_CMD | /usr/local/monetdb/bin/monetdbd | /usr/bin/monetdbd | |
MONETDB_PORT | 50000 | 50000 | To avoid port conflicts, this port number is sometimes changed to 50006. |
PASSPHRASE | monetdb | monetdb | Required for remote control of Monetdb |
Also, check the AgileBI shared connection in PDI that Instaview creates and uses to talk to Monetdb. You can open this connection in PDI and test or explore it. This connection is used by the templates. If you open the .ktr file used by Instaview you can run it that way as long as Monetdb is running.
Manage Multiple Outer-Joins
When you have three or more tables that require outer joins, the order in which the tables are joined is critical. Consider the example below:
In the sample preview below, the entries, 1, 2 ,3, and 4, in Table4 are taken and outer-joined with the records in the two other tables. The three other tables contain fewer records. The relationships are defined but now the order of execution critical. Relationship A is executed first, followed by B, then C.
Below is the query that is generated:
The nested join syntax that is generated forces the order of execution:
- Join Table1 and Table2 (shown in red)
- Join Table3 and A = B (shown in blue)
- Join Table4 with B = Result
Other orders of execution are just as valid depending on the business context to which they are applied. Another order of execution will generate a different result. To allow business model designers to ensure that user selections are executed in a specific way, a Join Order Key is added to the Relationship Properties dialog box.
The join order key is relevant only in instances in which outer joins are deployed in business models. To make the importance of the execution order apparent, this information is displayed in the graphical view of the model, as shown below.