June 2024

    June 2024


    Article summary

    Release Notes SummaryRelease Notes
    List now supports function AddRandomIfEmpty which will allow creating random objects to the list

    List now supports function AddRandomIfEmpty which will allow creating random objects to the list. It can be used like below:

    lstExistingModelName.AddRandomIfEmpty<>(10, New Namespace.ModelName())
    or
    lstExistingModelName.AddRandomIfEmpty<>(10, New Namespace.Modelname With

    { .FirstName = RandomeHelper.Faker.Name.FirstName() }

    )

    Added the ability In Datagen to convert clone data across environments and within databases

    On the Datagen we can now convert it to clone data across environments and within databases.

    Cloning data allows sets of interesting, rare or data that is causing bugs to be easily moved from one database/schema/environment to another. The data can also be manipulated to mask any sensitive data, or amended to make it more useful in the target schema. For example age the data to be current, or add in additional transactional data required for specific tests.

    Simply create the rule set with the tables you need and then convert the datagen to a clone.

    You can also create multiple copies of the same data allowing for rare data to be easily multiplied. All internal keys and business relationship values are created with new values.

    Untitled-20240527-095953.png

    In data generation and Subset rule sets, the entity diagram button now invokes the diagram for active tables

    Click on the diagram button on the rule set version

    image-20240531-145608.png

    And the selected diagram will be displayed

    When using ResolveCSV in masterfile controller, there is now the ability to invoke a find and a make together

    ResolveCSV runs through a created CSV from prior steps - for example create message using template and resolves any VIP functions or Excel functions starting with an =

    The ResolveCSV can also make a call out to test criteria, pass in parameters and perform any test criteria, for example make some date OR look up data and allocate it.

    For example:

    {{parTestID=395,parPoolID=116,col=3,parWhere=SEX = '

    {SEX}'}}

    Will issue a call to the test data allocation for test id 395, using pool id 116 with a where clause which includes another column in the CSV containing SEX. It will return the third column in the OUT variables

    If you include the expression.

    ,parTestName={ModelTestName}

    And include a column ModelTestName in the csv with a unique resolvable expression, for example: {="TEST" & SEQNEXTVALUE("ORDER_ID", 105)}

    You will get a unique find if you wish to create multiple rows of data, for example create 10 messages.

    You can link the find to a Make when no data is found, by including:

    {{parTestID=395,parMakeTestID=397,parPoolID=116,col=3,parWhere=SEX = ‘{SEX}

    ',parListCol1=

    {ADDNINO},parListCol2={ADDNINO}

    ,parListCol3=

    {ADDFIRSTNAME}

    ,parListCol4=

    {ADDLASTNAME}

    ,parListCol5=

    {SEX}

    ,parTestName=

    {ModelTestName}

    }}

    a parMakeTestID and point it to a Test Criteria that makes data.

    Any variables with the same name, in this case SEX will be used for the make as well as the find, so if you couldn’t find a female we will make one in this case.

    The shipped flow C:\VIPTDM\ImportCSVIntoAList\ImportCSVIntoAList.vip

    Now has a new parMode DIRECTADD which will add in a new row to a list. You can add in columns using parListCol to each column in the list.

    Added the ability to handle nulls in search and reserve

    If you wish to search for data with null values simply use the reserved word ‘null’ - the query will switch to using ‘is null’ SQL constructs. The same is true for ‘not null’

    Note that the query will change to is null or is not null only, any other data mapping will be replaced, for example Greater than etc.

    Added the ability to eliminate duplicates from find and reserve search queries

    You can now eliminated duplicates from find and reserve search queries - this could occur when you are returning columns that are not all unique. Simply set the new option on the form to switch the form to only return distinct values.

    Added the ability to append the column searched on to the results tab

    When you create the search form you can include a new parameter to include the ability to return the columns you used in the search to the summary screen and allocateddata.xlsx. So for example, find accounts where the number_of_sales >= 100 - Would return acct_no=743, number_of_sales=150

    Changed the data generation to explicitly extract to csv

    Changed the data generation to explicitly extract to csv - which can operate in parallel and then load the data into a schema directly.

    Add in two new drop downs.

    image-20240429-131344.png

    Option 1 has the following options.

    image-20240429-131439.png

    The repeater is the default number of time to repeat the publish. This is the value that goes into the created submit form

    The form will look like this.

    image-20240429-132317.png

    All the normal data generation parameters will exists, plus a repeater.

    If you repeat 10 times you will have 10 parallel processes running. so 10 and 20 = 200 products

    Once complete copy the outputted csv files to a folder or make a note of the working director.

    image-20240429-132501.png

    And put the folder containing the data into the required folder.

    Things to note.

    You will need to use Curiosity sequences to create the data.

    image-20240429-132709.png

    image-20240429-132803.png

    Added the ability to display any compile errors from the generated VIP flow in the rule set version editor

    There is now an ability to verify - compile and resolve a rule set version from within the data activity.

    There is a new option: Run Validate and Preview.

    image-20240529-104432.png

    This will in effect compile and resolve the rule set version.

    image-20240529-104532.png

    Each of the cells has various statuses - not checked, error, and valid

    When you run the preview if there are any errors they will display in the job status:

    image-20240529-112833.png

    And you can see the error in the rule set version editor:

    image-20240529-112900.png

    If there are no compile errors the preview will display a sample of data in the job status plus create csvs for each table:

    image-20240529-104742.png

    The rule set version cell will display:

    image-20240529-113210.png

    Added a code completion service to help build functions

    There is a new service installed on the server.

    image-20240530-121549.png

    Called code completion, this provides a much more sophisticated way of building and validating functions. Micro help with examples are provided.

    You can see which servers have code completion available - they have {}

    image-20240530-121714.png

    Each rule set will need a preview server

    When you are in the editor:

    There is now a much richer set of functions with the output type displayed.

    image-20240530-201302.png

    The editor will now display micro help including the descriptions, types and examples for each type of function.

    image-20240530-201605.png

    image-20240530-121921.png

    If a function is invalid it will display a red circle, if you click on the circle.

    image-20240530-201704.png

    It will describe the error.

    New Datagen Accelerators

    When selecting sequential in list selector, 3 options:

    Start from top (first row)
    Randomly select rows
    Dynamically offset (Starts from a random row)
    -----------------------------------------------------------------------------
    Accelerator to Create Parameter from any table within definition and select a column from it.
    -----------------------------------------------------------------------------
    When creating soft keys, auto populate name.

      Added a code completion service to help build functions

    When installing the server - you can now include a “Code Completion Server”

    This allows the data generation editor to use the frontend of mirrorsharp to connect to the CodeCompletion server using websockets and offer context-based intellisense

    Added a Random / Sequence choice for disabled foreign key in the Rule Set Version Accelerator

    On foreign key panel on rule set, add buttons to:

    Select random value from the generated parent items
    Select sequential value from the generated parent items
    -----------------------------------------------------------------------
    Add to rule set table view warning icon if more than one FK is active
    -----------------------------------------------------------------------
    Load any tables from selected table in Data Painter

    Added the ability to display groups to be included, and allow selection of the groups to be added, into the pipeline into the datagen pipeline accelerator

    For large database models that have been organised into groups - you can now choose which groups you want to include in the pipeline. Often you will want to work on three or four groups that logically fit together.

    Added new ability to create a Subset Rule Set

    As an alternative to creating a “Process Model” list to drive subset processing you can now create a Subset Rule Set.

     Attach a Definition Version to your Activity and from the Actions dropdown select “Create New Rule Set” and click on the execute button.

    CreateRuleSet_1.jpg

     Once a Rule Set has been created you can modify it to select the tables included in the subset and define them as “Driving”, “Subset” or “Reference” tables. 

    RuleSet_2.png

    If you set a table as a Driving table you can then select it and add a driving condition. 

    RuleSet_4.png

    The Foreign Key Rules section of the Rule Set allows you to active or de-activate foreign key relationships from a parent to a child or a child to a parent 

    RuleSet_3.png

     

     Once the Subset Rule Set has been created and edited you can create a submit form and run the subset processing from that.

     

    Added the ability to create a new rule set version without having to clone or copy another version.

    You can now create a new rule set version without having to clone or copy another version.

    Click on New Version and select any tables etc to create the new version.

    image-20240530-202339.png

    Once you have created the version you can edit name of the version and add a description.

    New data types and more details in the data painter or wherever column names are displayed

    Throughout the data generation where the data painter or column names are displayed, the data type and more details about the column are displayed making it easier to create the data you need. If there has been a deep analysis performed then that can be easily viewed.

    Added support for Databricks CRUD operations

    Full Support added for DataBricks data generation.

    Added the ability to copy defaults

    The rule defaults allow you to easily make mass edits for data generation and masking. There are a number of standard defaults shipped s standard. You can now copy any of the standard or other groups of default edits, this allows the user to use the prior work and customize it for your own purposes.

    Enhancement to Compile errors when creating VIP flows

    You can now easily track any compile errors before you create the vip flow on the server.

    Firstly edit your function in a row/column.

    When you make a change you will see a triangle to show it needs to be checked.

    image-20240531-115100.png

    From the data activity version, use the action “Run Validate and Preview”

    This will validate any expressions and show you any errors on the submission screen.

    image-20240531-115423.png

    You can also go back to the rule set version editor and see a red circle with an x

    image-20240531-115527.png

    If you click on the x you can see the exact compile error.

    If you re-run the Validate and Preview it will display an initial pass at what the generated data would look like:

    image-20240531-115757.png

    Added new search operators on the default search

    The search and reserve now has 4 new operators.

    Not Contains
    Not Starts With
    Ends With
    Not Ends With

    Added the ability to display descriptor columns in submit form drop downs

    You can display descriptor columns in submit form drop downs - you can refer to another column to be passed down into the submit process. For example Currency Name is displayed but Currency code is passed into the process.


    If you edit the find submit form.

    Change the data type to String and switch the UI Type to Range

    image-20240528-124128.png

    The Screen will prompt you for a minimum and maximum range

    image-20240528-124028.png

    This will convert the SQL query to use a >= and <=

    For example: ("order_count" >= 1 and "order_count" <= 3)

    Improvements to the Rule Set Version Table Editor
    • Data Type and Nullability Display: You can now see the data type and nullability next to each column in the Data Painter.
    • New Filters: Added filters for Rule Text (Contains), Column Name, Data Type, and Active/Inactive Columns.
    • Bulk Activation of Columns: Easily activate all inactive columns at once with a new bulk action.
    • Batch Expression Input: Input the same expression in all filtered columns with a single action.
    Added a new action to order the tables in load order

    When generating or subsetting data, the load order is important to ensure that parent tables get loaded prior to child tables. This avoids having to drop/disable foreign keys. The rule set version will now be created with the load order automatically calculated. You can also disable and enable foreign keys and recalculate the load order from the actions menu in the rule set version.

    Added the ability to show the tables being masked in a masking rule set when the plus button on a Pipeline is clicked

    When you click on the plus button any tables being masked and their relationships will be displayed.

    image-20240528-114149.png


    You can apply defaults to multiple rule set versions in one pass. You can do this for either all of the rule set versions in a rule set OR for all rule set versions being used in a pipeline

    Flows can now be generated from Curiosity Modeller web frontend

    Flows can be generated from TestModeller web frontend

    A starter set of defaults are now shipped as standard

    A starter set of defaults are now shipped as standard, these contain a series of useful and example types of defaults that can be applied to the generation and masking rule sets.

    image-20240528-113715.png

    They are displayed in blue - they cannot be edited but they can be copied.

    Functionality to bulk edit nodes in the modeller screen

    Within the Quality Modeller screen there will now appear an icon to give the user the ability to edit node properties for multiple nodes displayed in a table.

    Extensive new defaults processing capabilities

    Te defauls - the ability to mass find and apply changes to the generation, masking and defintion has been significantly improved.

    You can now have multiple sets of default rules.

    image-20240528-124920.png

    There a number of standard default rules applied.

    You can have multiple rule set find and changes.

    image-20240528-125034.png

    The search capability has been significantly improved.

    image-20240528-125236.png

    The type of attributes and objects has been significantly improved.

    There is also the ability to look at the current value and select where that value came from.

    image-20240528-125405.png

    This allows for very sophisticated mass changes to be made across multiple test data activities.

    Once the find has been run, the old and potential new change will be displayed.

    image-20240528-125637.png

    You can selectively filter on these results and choose which cells you wish to apply any changes to.

    New functions for data using different distribution algorithms

    Data Generation can leverage various distribution algorithms available using RandomHelper to generate data e.g. NormalDistribution

    Added the ability to declare variable for each Parameter Row Scope

    The ability to declare variable for each Parameter Row Scope has been added


    What's Next