Skip to content

BigQuery Transformation

The BigQuery Transformation is used in the enterprise version of process.science for Power BI to prepare the data. The package is designed to transform the data from the BigQuery database into a form that is suitable for Power BI. It creates four tables that can be used for analysis in Power BI.

Preparing the input table

Before the scripts can be used, you must ensure that your input table fulfils the following requirements. The column names for case_id, activity and timestamp are fixed and must be present in your input table. The other names can be changed in the script.

Field NameDescriptionData TypeMandatory
case_idThrough this field the process instances can be differentiated.varchar
activityThis field describes the activity that has taken place.varchar
activity_groupedThis field describes the group of the activity that has taken place.varchar
timestampThis field describes when an event has taken place.timestamp
timestamp_endThis field can be used to calculate the duration of activities.timestamp
sort_keyThis field can be used to adjust the sorting of the event log.numeric
valueThis allows you to set the costs for the current event.numeric
automatedThis allows you to set wether the activity was automated or not.numeric
resourceThis allows you to set user information for each activity.‚Any
Additional Activity ValuesFurther information per activity, e.g. quantity of items. All fields, not matching other names will be mapped as additional activity values and will be stored in the newly created event log table.Any
Additional Cases ValuesFurther information per case, e.g. a company division. All fields starting with case_ will be mapped as additional cases values and will be stored in the newly created cases table.Any
Additional Activity Values GroupedFurther information per activity group, e.g. quantity of items. All fields ending with _grouped will be mapped as additional activity group values and will be stored in the newly created event log table.Any

Downloading the scripts

The scripts can always be downloaded in the latest version from our Self Service Portal. The scripts are contained in a ZIP file and must be unpacked.

Installation and configuration

Customise project and dataset

The project ps4pbi and the dataset pstest are used by default. If you use a different project or dataset, you must adapt the scripts accordingly so that the procedures are created in the correct environment.

Creating the procedures

The first step is to create the procedures that write the data to the tables. To do this, the scripts 1_CreateEventLogProcedure.sql, 2_CreateEventLogGroupedProcedure.sql, 3_CreateAdditionalGroupedTablesProcedure.sql , 4_CreateCasesDataProcedure.sql and 5_CreatePerformTransformationProcedure.sql must be executed. This only needs to be done once.

Event log

The procedure ps_createEventLogDataTable creates the table eventlog in your output schema and fills it with the data from the input table. All additional columns that do not begin with case_ or end with _grouped are stored in the eventlog table.

sql
CREATE OR REPLACE PROCEDURE `ps4pbi.pstest.ps_createEventLogTable`(
    ProjectId STRING,
    DatasetName STRING,
    TableName STRING,
    ActivityGroupedName STRING,
    TimestampEndName STRING,
    ValueName STRING,
    AutomatedName STRING,
    ResourceName STRING,
    SortKeyName STRING
)

If the dynamic columns (timestamp_end, sort_key, value, automated and resource) are not present in the input table, they are automatically filled with default values.

Event log grouped

The procedure ps_createEventLogGroupedTable creates the table eventlog_grouped in your output schema and fills it with the data from the input table. This script is only executed if the grouped calculation is to take place, i.e. the activity_grouped column is present in the input table. All additional columns with the suffix _grouped are saved in the eventlog_grouped table.

sql
CREATE OR REPLACE PROCEDURE `ps4pbi.pstest.ps_createEventLogGroupedTable`(
    ProjectId STRING,
    DatasetName STRING,
    TableName STRING,
    ActivityGroupedName STRING,
    TimestampEndName STRING,
    ValueName STRING,
    AutomatedName STRING,
    ResourceName STRING,
    SortKeyName STRING,
    OUT PerformGroupedCalculation BOOL
)

Additional grouped tables

The procedure ps_createAdditionalGroupedTables creates the tables filter_and_grouped and filter_or_grouped. This procedure is only executed if the grouped calculation is to take place.

sql
CREATE OR REPLACE PROCEDURE `ps4pbi.pstest.ps_createAdditionalGroupedTables`(
  ProjectId STRING,
  DatasetName STRING
)

Case table

The procedure ps_createCasesDataTable creates the table cases_data in your output schema and fills it with the data from the input table. All additional columns beginning with case_ are stored in the cases_data table.

sql
CREATE OR REPLACE PROCEDURE `ps4pbi.pstest.ps_createCasesDataTable`(
    ProjectId STRING,
    DatasetName STRING,
    TableName STRING,
    PerformGroupedCalculation BOOL
)

Loading the data

To load the data, the script 5_CreatePerformTransformationProcedure.sql must be executed. This script creates a procedure that calls all other procedures that write the data to the tables.

sql
CREATE OR REPLACE PROCEDURE `ps4pbi.pstest.ps_transformEventLog`(
  ProjectId STRING,
  DatasetName STRING,
  TableName STRING,
  ActivityGroupedName STRING,
  TimestampEndName STRING,
  ValueName STRING,
  AutomatedName STRING,
  ResourceName STRING,
  SortKeyName STRING
)

Once this procedure has been created, it can be executed to write the data to the tables using the script 6_PerformTransformation.sql. The information on the input table and the dynamic columns must be adapted above.

sql
-- **************** Define the table and column names here ********************** --

DECLARE ProjectId STRING DEFAULT 'ps4pbi';
DECLARE DatasetName STRING DEFAULT 'pstest';
DECLARE TableName STRING DEFAULT 'eventlog_en';
DECLARE ActivityGroupedName STRING DEFAULT 'activity_grouped';
DECLARE TimestampEndName STRING DEFAULT 'timestamp_end';
DECLARE ValueName STRING DEFAULT 'activity_cost';
DECLARE AutomatedName STRING DEFAULT 'automated';
DECLARE ResourceName STRING DEFAULT 'resource';
DECLARE SortKeyName STRING DEFAULT 'sort_key';


-- **************** Define the table and column names here ********************** --

CALL `ps4pbi.pstest.ps_transformEventLog`(ProjectId, DatasetName, TableName, ActivityGroupedName, TimestampEndName, ValueName, AutomatedName, ResourceName, SortKeyName);

Scheduling

You can use a tool of your choice to automate the last Call. This allows you to update your data regularly and always see the latest information in Power BI. The instructions from Google Scheduling queries can be used for this, for example.