LogicBlox 4.4.8

Release Date: October 3rd 2017

Executive Summary

LogicBlox 4.4.8 introduces the following enhancements:

  • Measure Service

    • The measure service will now provide more info when reporting parse errors.

    • The lb measure-service install command now provides error messages with respect to the source files.

  • Modeler-js

    • Modeler-js is now able to import data from Excel files with the new 'Data Import' menu option in the navigation tree. Users can now also export an Excel template containing just the headers of the grid using the existing 'Export to Excel' functionality.

    • Modeler-js has a new internal service to delete user-specific view state.

    • Modeler-js will now render a view even when it contains non-existent measures in the view configuration.

    • Users can now quickly apply value filters in Modeler-js by pressing ENTER in input fields of the filter panel.

  • Tools and Services

    • The LogicBlox systemd services have all been updated to use systemd socket activation.

    • The cloud-store utility now allows multiple encryption keys to be associated with a file.

    • lb config now supports generating ScalaDoc from Scala sources.

    • Makefiles generated by lb config now explicitly set bash as the shell.

    • Exception messages from lb web-client now include the URL that caused the exception.

    • The GetPredicateInfoBulk command has been removed from the ConnectBlox interface.

What's New

Measure Service

  • The measure service will now provide a context line from the source file when reporting CubiQL and Measure Language parse errors.

  • The lb measure-service install command now parses rule files individually before sending them to the server to provide errors with respect to the source files.

Modeler-js

  • The new navigation menu item Data Import will appear in all applications. It allows users to import Excel files into the workspace by binding columns in the file to Levels and Measures in the application.

    Importing only level member labels

    It is possible to import just the labels of a level instead of the "id". However, there is additional configuration need to allow this as well as some limitations. First, you'll need to define a predicate that maps all labels to an id. If you have duplicate labels, be sure to apply some kind of aggregation to prevent functional dependency violations. The predicate must have one string key and a string value.

    Example 15. 

    lookup[label] = id -> string(label), string(id).
    lookup[label] = firstId <-
        agg<<firstId=min(id)>>
        Product:sku:id[sku] = id,
        Product:sku:label[sku] = label.

    You must then tell the modeler that a lookup predicate exists. You do that by writing to the level_label_to_id_mapping predicate:

    Example 16. 

    +pivot:config:format:level_label_to_id_mapping[l] = "model:hierarchy:product:lookup" <-
        lb:web:measure:Dimension_name[d] = "Product",
        lb:web:measure:Dimension_level(d,l),
        lb:web:measure:Dimension:Level_name[l] = "sku".

    Once this is done, the Is Label checkbox on the data import screen will be available for the Level.

    A limitation of importing only a level's label without its id is that level creation is not allowed, nor is updating the label. The reason for this is that since the id is not present in the file, we must look it up by the label. It is therefore impossible to know if an unknown label is a new level member or an update to an existing level member.

    Limitations

    • byMetric validations are not supported

    • Import works only at base intersection

    • Every row must have a unique key

    • Level member creation by labels is not supported

    • Nested column headers or slices are not supported for Excel files

  • A new internal service has been added to allow for deleting a user-specific view state. The service is supported on the existing /viewstate URI with DELETE as the HTTP method.

    The username and view ID should be passed in as data in the HTTP request.

    Example 17. 

    Here is the data layout for deleting the view state of 'product-analysis-subclass-bottom' for 'user1':

    {
        "userName": "user1",
        "viewId": "product-analysis-subclass-bottom"
    }
  • Modeler-js now renders a view that contains non-existent measures in the view configuration. Any measures that don't exist will be removed automatically from the view during render. Modeler-js will write a warning message to the console to alert the user.

  • The Export To Excel function now allows the users to only export the headers of the grid. This file can serve as a template for importing new data into the same grid.

  • Users can now quickly apply value filters in Modeler-js by pressing ENTER in input fields of the filter panel.

Tools and Services

  • The LogicBlox systemd services (lb-server, lb-web-server, and lb-compiler) have all been updated to use systemd socket activation, dynamically starting the services the first time a request is made. The main advantage of this is robustness with respect to service start up sequence. The socket activation changes allow systemd to manage the service dependencies and start them in the correct order as needed. Details on how LogicBlox services work with the systemd framework have been added as a new chapter in the LogicBlox Administrative Guide.

  • The cloud-store utility now allows multiple encryption keys to be associated with a file. Use the add-encryption-key command to add a new encryption key to a file and use the remove-encryption-key command to remove an existing encryption key from a file. Encryption keys cannot be added to a file that was not uploaded initially with a key. Likewise, the last encryption key for a file cannot be removed. A file is marked as either encrypted or not encrypted when it is uploaded and it cannot change after that without deleting and uploading the file again. Example command usage:

    Example 18. 

    cloud-store upload -i local_file.txt --key first-key s3://my-bucket/remote_file.txt

    cloud-store add-encryption-key --key second-key s3://my-bucket/remote_file.txt

    cloud-store remove-encryption-key --key first-key s3://my-bucket/remote_file.txt

  • lb config now supports generating ScalaDoc from Scala sources.

  • Makefiles generated by lb config now explicitly set bash as the shell.

  • Exception messages from lb web-client now include the URL that caused the exception.

  • The GetPredicateInfoBulk command has been removed from the ConnectBlox interface.

Corrected Issues

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

  • Validation of decimal values in TDX services is now more robust. If the service definition uses ">=", ">", "<=" or "<" in the format and the value is not a floating point, the system will return HTTP 500.

  • Fixed the lb web-client command-line to allow a request body on HTTP DELETE requests issued to Json services.

  • All lb commands were reviewed to make sure read-only requests are made to a workspace whenever possible. The list-blocks, print-block, and print-rules commands were corrected to use read-only access.

  • Fixed the string:decimal:convert function, used by TDX decimal format, to support E notation. For example, string:decimal:convert["1E-05"] will now return a decimal value instead of evaluating to nothing.

  • Resolved an issue in the measure service with parsing negative scalars in CubiQL literal expressions.

  • Resolved an issue in the measure service involving desugaring some expressions in CubiQL inverses.

  • Fixed long level labels from overlapping the list of level members from the child level in the "Assign" popup in Modeler-js.

  • Fixed issue in Modeler-js that prevented the user from editing headers (labels) with multiple levels on the axis.

  • Fixed caching issues with Export to Excel in Modeler-js.

  • Resolved behavior in Modeler-js where on violation of a cell's type (e.g. entering letters into a number field) synchronous validation would empty the value entered by the user.

  • Copy/paste in Modeler-js now respects the display format (LABEL, ID, LABEL_ID, and ID_LABEL) under "Pivot settings".

  • Fixed unexpected resizing of all columns in Modeler-js when an entire data row was selected.

  • Fixed some situations where Modeler-js would not render views correctly for IE11.

  • Fixed an issue in Chart Mode where Modeler-js would unexpectedly move the 'Measure Values' pill to another axis when the slice value was changed via a synchronized slice on another sheet.

Installation and Upgrade information

Installation Instructions

Install LogicBlox 4.4.8 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.8/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

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; OSX 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.