Release 2.0 Change Log

With this version, we aimed to make Bedrock more “TM1 version” and “system-type” agnostic. Object locking is dependent on both your version of TM1 and how you use it, i.e. your propensity for creating and destroying objects, how concurrent they are and whether they are system or user-driven. This brings into play trade-offs of performance and system maintenance which the TM1 developer can flexibly invoke via Bedrock’s multi-switch parameters.

Thus we drive towards giving as much flexibility as possible to the developer; in this release this new functionality chiefly is manifested in a new Bedrock “core” process called Bedrock.Cube.View.Create that is used by the clearing, copying and exporting “calling” processes.

Instead of using Bedrock named views and subsets the TM1 developer can nominate the name of the view to be used by the Bedrock process. If no view or subset name is provided then a Bedrock name will be used with a date stamp and random number. This is to ensure that there is no concurrency issue with two users using the same object at the same time. There is also an option for the TM1 developer to decide if the Bedrock view and/or subset are to be cleaned up at the end of the Bedrock process.

This improvement has been made to all Bedrock processes in Bedrock 2.0.


Numerous fixes have been made to existing Bedrock processes. 


Bedrock, temporary objects and server locking

Two new processes have been created for clearing and exporting data, these are called Bedrock.Cube.Data.Clear and Bedrock.Cube.Data.Export, these supersede Bedrock.Cube.Data.ZeroOut  and Bedrock.Cube.Data.ExportToFile. Each of these processes in addition to Bedrock.Cube.Data.Copy now have a new parameter called pDestroyTempObj, this parameter determines whether the views and subsets are deleted after use:

In each of these 3 processes you can pass in the name of the view so you can reuse it appropriately if you want to take advantage of Parallel Interaction (9.5.2+). For example you need to use a view name that won't be used by another process at the same time, i.e. }GL.Hourly.Load


New Processes


Bedrock.Cube.View.Create

This process is now one of the foundation processes for a number of other Bedrock processes. It takes the concept of a filter first introduced in Bedrock.Cube.Data.ZeroOut and makes it easier to read and reusable for other processes. The process takes a string filter and then does the heavy lifting for you creating a view that can be used for multiple purposes.  Below are some examples of filters from the Bedrock documentation:

Hot Tip: When building a Filter String, use the debug functionality for a char by char feedback to flat file.


Bedrock.Cube.Data.Clear

Replaces Bedrock.Cube.Data.ZeroOut. Uses the new filter concept by calling Bedrock.Cube.View.Create


Bedrock.Cube.Data.Export

Replaces Bedrock.Cube.Data.Export. Now uses the filter concept by calling Bedrock.Cube.View.Create


Bedrock.Cube.ViewAndSubsets.Delete

Is used in conjunction with Bedrock.Cube.View.Create to delete the views and subsets using a common name. Use this process in your Epilog to clean up a view that was cleared in the Prolog tab.


Bedrock.Dim.CloneFromSubset

Creates a new dimension based on a subset from another dimension. 


Bedrock.Dim.CloneFromSubset.Flat

Creates a new dimension with a flat hierarchy based on a subset in another dimension.


Bedrock.Server.DataDir.Backup

Makes a copy of all objects from the data directory to the specified backup directory.


Bedrock.Server.DataDir.ListContents

Outputs to text file the contents of the data directory - very helpful for documentation.


Copyright 2011, bedrocktm1.org Tested on: TM1 Versions 9.1 to 10.2.1 / Cognos Express 9.0 to 10.2