LogicBlox 4.4.13

Release Date: March 3, 2018

What's New

LogicBlox 4.4.13 introduces the following enhancements:

  • Modeler

    • Modeler's axis panels have been redesigned to improve the overall user experience of configuring views.

      • Visible measures are now visible as fields in the new measures axis panel. This means they are no longer hidden away in the dimension browser. The new axis panel allows easy configuration and reordering of visible measures without the need to open and use the configuration mode of the view.

      • The new axis panel design prevents accidentally adding a measure as an attribute. Placing a measure as a field on the rows, columns, or slices axis panel make it appear as an attribute. When measures are placed as a field on the new measures axis panel, they are automatically treated as visible measures.

      • There is now only one way to add levels and measures to the view. Instead of either using the '+' buttons on the visible axis (which are no longer available) or the configuration mode of the view, the user can now simply open configuration mode with the new configuration mode icon. In configuration mode, all axis panels will become visible and the user can simply search for either levels or measures in the dimension browser without the need to choose the appropriate tab first. Fields can be added to the axes with a simple drag and drop.

      • The axis panels can now be expanded manually using the expand icons to show all fields, even when space is limited, allowing users to reorder fields easily. Additionally, any time a field is dragged over the axis panel, if it is collapsed it will auto-expand to allow dropping fields at any position.

    • The Excel Import functionality has been updated with the following functionality:

      • Ability to load levels, level attributes, and level maps.

      • Ability to use columns in both the keyspace and value space of a measure.

      • Ability to import measures at intersections above the base.

      • Synchronous validation checks via configured constraints prior to importing data. Additionally, replacing data import via TDX with imports via the measure service will give you the ability to apply asynchronous validation checks and historical and position locks during import.

      • Ability to export validation failures to a CSV file.

      The following figure shows a sample configuration for importing levels, level labels, and level maps using the latest Excel import functionality.

      If schema editing is enabled in Modeler (editSchema is set to true), the import functionality now provides the ability to import levels, level attributes, and level maps. To create or delete levels members, simply bind a column in the level binding dropdown and set the creation policy to 'Accumulate' or 'Remove'. To populate level attributes, bind a column to the attribute in the measure binding dropdown. To populate a level map, look for the <dimension>:<from_level>:<to_level> mapping in the measure binding dropdown. By default, the level mappings will not create new levels. If you want to create new entities in the <to_level>, you need to set the accumulation policy to "Accumulate"

      The flag "Should Fail On Error" indicates whether all updates generated from the file should fail if any entity key is missing in the file. By default, we prevent edits from being sent if missing a key or value.

      We currently do not allow the intersection to be specified for a given measure but instead, take the following approach:

      1. Identify the dimensions in the keyspace.

      2. Identify the columns bound to levels in the dimensions in the keyspace.

      3. Pick the lowest level for each dimension.

      4. Assign the lowest level to the intersection and assume the unbound keys in the keyspace are set to all.

      The intersection column identifies which keys are bound for a specific measure. We do not currently allow binding more than a single column to a level to prevent ambiguous binding. We prevent entity columns that have a "Remove" accumulation policy from being bound to the keyspace of a measure. Entities do not need to be bound to the value-space of a measure in order to be added or removed. We do not allow the import to proceed if entity columns are not bound in a measure's key space, set with an accumulation policy, or ignored.

      Please note that the new functionality will typically have slower performance than the TDX equivalent but should not be noticeable unless importing large amounts of data.

    • Modeler now validates sheet and canvas JSON configurations against a defined JSON schema. Information about invalid configurations will be presented as warnings in the browser console.

    • The level creation form, both standard and custom, no longer allows the user to update existing levels when specifying an existing level ID. When the user specifies the ID of an existing level, a message is presented to the user and the user can then review/dismiss the data entered in the form.

    • The list of measures to format in the conditional formatting panel is now limited to the measures visible on the view. The panel still allows the user to use the value of both visible and invisible measures in the formatting conditions.

    • By popular request, we have reverted to the previous default of having all navigation tree items be open by default.

      If you want a node to be collapsed by default, you can add the "collapsed" property to the tree node:

          "id": "urls",
          "properties": [{
              "key": "caption",
              "value" : "URLs"
          }, {
              "key": "collapsed",
              "value": true
          "children": [ ... ]

    • Routes (URLs) leading to the sheets have changed. Now if you navigate from the canvas to the sheet, the route will look like /canvas/:canvasId/sheet/:sheetId. If you open the sheet which doesn't have parent canvas, the route will remain /sheet/:sheetId. Thus we can solve 2 issues: passing down required configuration from canvas to sheet and resolving the case when the user got logged out when in configuration mode. So now instead of doing history.goBack() in configuration mode, we push the actual route of the canvas we came from. This is more robust.

      In case when the user navigates to the sheet which doesn't have a canvas (like "Custom Sheet 1" under "My views") it will be considered that this sheet is opened in config mode, so the config mode control icon will become disabled, since we don't have any canvas to go to.

  • Tools and Services

    • Improved efficiency of script rules that use write-optimized predicates.

  • Measure Service

    • In the measure service, the semantics of composite aggregations has changed, without changing the syntax of CompositeComponent message in the protocol. While previously the dimension and label fields of the message were precisely matched to these fields in aggregation groupings in order to find the grouping corresponding to the composite component, now a CompositeComponent with a dimension and no label is treated like a wildcard that matches any grouping at the dimension regardless of its label – provided there is no other CompositeComponent for this label exactly. With this, several groupings can now be matched to the same CompositeComponent, making composite aggregations friendlier to use with dimension splitting.

      This semantics change is backward-compatible, in the sense that composite aggregations that used to be acceptable are still acceptable and have the same outcome. However, there are newly-acceptable aggregations.

    • Using the measure language is now deprecated. The measure service will report a deprecation warning when installing measure language rules.

    • The measure service now allows binding a CubiQL expression to a specific predicate defined in the model.

Corrected Issues

The issues listed below have been corrected since the 4.4.12 release:

  • Modeler

    • The dimension browser now shows dimensions and measures in lexicographical order.

    • Modeler now correctly handles the input of negative numbers and subtraction calculations.

      For instance, when the user enters '-10' in a cell, its value will now be updated correctly to minus 10. Please note, when the user wants to subtract 10 from a cell that currently contains a value, the user can enter '+-10'. The result of this calculation for a cell containing value 210 will be 200.

    • Dimension splitting now also works properly for measures with composite aggregations.

  • Tools and Services

    • Fixed a small issue in lb-workflow logs that incorrectly printed the name of the file containing errors when a TDX import/export operation failed.

    • Fixed a problem where simple upsert rules with a condition on a value could produce incorrect results for default-valued predicates.

    • Corrected a problem that caused an infinite loop in a boundary case of some rule evaluations involving alpha-tree predicates.

    • Reverted a performance regression introduced in 4.4.12 regarding the monitoring of script rules for abort detection and performance logging.

  • Measure Service

    • Online help for the lb measure-service admin command incorrectly referred to a restart option. The correct option is refresh and the help text has been updated to reflect that.

    • Fixed an issue that could cause non-deterministic failures with updates to metrics defined in the measure language with inverses.

Installation Information

Installation Instructions

Install LogicBlox 4.4.13 by following the steps outlined below:

  1. Download the installation package.
  2. Extract the tarball in <YourPreferredInstallDirectory>
  3. Run the following command:
    source <YourPreferredInstallDirectory>/logicblox-4.4.13/etc/profile.d/logicblox.sh
    NOTE: this script will set all the necessary environment variables. You might want to add this command to your .bashrc.

Upgrade Information

  • Modeler

    • The library containing the modeler migration tool is included in the distribution under lib/npm/modeler-migrations-<version>.tgz and contains a command line tool for doing various transformations/migrations of modeler configurations.

      To use the npm module, you first need to install it by running npm install path/to/modeler-migrations-<version>.tgz. You will then be able to use the command line tool. The module contains a README.md file that lists all available transformations as well as detailed instructions for use.

      To automatically upgrade a Modeler-js based application from one version to another, run the upgrade script to upgrade between versions:

                ./node_modules/.bin/migrate-modeler --fromVersion <prevVer> --toVersion <toVer> /path/to/my/modelerapp

      where the version numbers refer to LogicBlox releases.

      NOTE: If you installed the npm module globally, you won't need the ./node_modules/.bin prefix on the command.

Release Information

Server requirements
Operating System: 64 bit Linux; macOS 10.10+ is supported for local development.
Java Runtime Environment 8
Python 2.7 or higher
Client requirements
Applications using modeler-js User Interface Components: Google Chrome or Internet Explorer 11+
Requirements for applications using non-modeler-js components may vary per application.