Platform Analytics 7 Dataflow

WI_LSFFLEXEVENTMART_HOLDING table

This describes the wi_lsfflexeventmart_holding table and how each column of data arises from the data file.
The wi_lsfflexeventmart_holding get its data from the FLEXNET_LICENSE_EVENTS table.
For each record we get, we will determine whether this is a lsf_job or not by looking at whether it contains a job_id and a cluster name. If it has a job_id and a cluster_name then the record will be sent over to wi_lsf_flex_LsfEtl.xml for the ETL to roll it up across the Cluster, SubmissionTime, JobID, JobArrayIndex, Vendor, Feature, Version, Server, EventReason, User, Event and CheckInTime and load the result into this table. Then for each record, the ETL will look up the corresponding job record in the wi_jobmart based on the Cluster_code, job_id and job_array_index. If the lookup of job record is not successful, then it will be filtered out and be inserted into this holding table. If a record already exists in this table, then we will just add up the following columns: check_out_num, duration, check_out_max and event_count. For every record in this table, they will be processed again by looking up the wi_jobmart table again before the processing of a new data file. If the lookup is successful, then this record will be merged with the looked-up of job info and inserted into the wi_lsfflexeventmart table. This record will then be marked as updated (set updated='1') and will be removed.
This is the column description of each data column of wi_lsfflexeventmart_holding and how each column is filled with data.
Column Name
Description
Key
CLUSTER_CODE
This comes from the "Project" field in the data file. We split the "Project" field into subfields and one of them is the cluster_name. Once we get the cluster_name, we then look it up in the wi_clustercode table to see if we have already has a record of it in there. If we do, then we'll get the code back, otherwise, we will insert it into the wi_clustercode table and generate the code. The code itself is a positive integer and each new code is equal to the maximum of the existing code+1.
Primary key
QUEUE_TIME
This comes from the SubmissionTime subfield in the "Project" field in the data file.

JOB_ID
This comes from the JobID subfield in the "Project" field in the data file.
Primary key
JOB_ARRAY_INDEX
This comes from the JobID subfield in the "Project" field in the data file.
Primary key
LIC_FEATURE_CODE
This comes from the "Feature" field in the data file. Once we get the license feature, we then look it up in the wi_licfeaturecode table to see if we have already has a record of it in there. If we do, then we'll get the code back, otherwise, we will insert it into the wi_licfeaturecode table and generate the code. The code itself is a positive integer and each new code is equal to the maximum of the existing code+1.
Primary key
LIC_VENDOR_CODE
This comes from the "Vendor" field in the data file. Once we get the license vendor, we then look it up in the wi_licvendorcode table to see if we have already has a record of it in there. If we do, then we'll get the code back, otherwise, we will insert it into the wi_licvendorcode table and generate the code. The code itself is a positive integer and each new code is equal to the maximum of the existing code+1.
Primary key
LIC_VERSION_CODE
This comes from the "Version" field in the data file. Once we get the license version, we then look it up in the wi_licversioncode table to see if we have already has a record of it in there. If we do, then we'll get the code back, otherwise, we will insert it into the wi_licversioncode table and generate the code. The code itself is a positive integer and each new code is equal to the maximum of the existing code+1.
Primary key
MIN_CHECKOUT_TIME
This is the minimum checkout time of all the rolled-up records of CheckOut field that have the same key as described in the beginning of this page. This is in milliseconds that start from '1990-01-01 00:00:00.0000'.

MAX_CHECKIN_TIME
This is the maximum checkin time of all the rolled-up records of CheckIn field that have the same key as described in the beginning of this page. This is in milliseconds that start from '1990-01-01 00:00:00.0000'.

CHECK_OUT_MAX
This is the maximum of all the rolled-up records of the Num field that have the same key as described in the beginning of this page.

DURATION
For each data record, the duration is equal to the Checkin time - Checkout time. This field is the sum of all the rolled-up records of the Duration field that have the same key as described in the beginning of this page.

CHECK_OUT_NUM
This field is the sum of all the rolled-up records of the Num field that have the same key as described in the beginning of this page.

SUBMISSION_DATE
This comes from the SubmissionTime subfield in the "Project" field in the data file.
Primary key
CLASSIFICATION
Not used

LIC_SERVER_CODE
This comes from the "LicenseServer" field in the data file. Once we get the license server, we then look it up in the wi_licservercode table to see if we have already has a record of it in there. If we do, then we'll get the code back, otherwise, we will insert it into the wi_licservercode table and generate the code. The code itself is a positive integer and each new code is equal to the maximum of the existing code+1.
Primary key
LIC_EVENT_CODE
This comes from the "Event" field in the data file. Once we get the event, we then look it up in the wi_liceventcode table to see if we have already has a record of it in there. If we do, then we'll get the code back, otherwise, we will insert it into the wi_liceventcode table and generate the code. The code itself is a positive integer and each new code is equal to the maximum of the existing code+1.
Primary key
LIC_EVENTREASON_CODE
This comes from the "Reason" field in the data file. Once we get the Event Reason, we then look it up in the wi_liceventreasoncode table to see if we have already has a record of it in there. If we do, then we'll get the code back, otherwise, we will insert it into the wi_liceventreasoncode table and generate the code. The code itself is a positive integer and each new code is equal to the maximum of the existing code+1.
Primary key
EVENT_COUNT
This is the total number of event record being rolled up into this record.

POOL_CODE
Not used.

USER_CODE
This comes from the "User" field in the data file. Once we get the user name, we then look it up in the wi_usercode table to see if we have already has a record of it in there. If we do, then we'll get the code back, otherwise, we will insert it into the wi_usercode table and generate the code. The code itself is a positive integer and each new code is equal to the maximum of the existing code+1.
Primary key
UPDATED
This field is being used to mark whether this record has already been merged with job info record and copied over to wi_lsfflexeventmart table. It will be set to '1' when a valid job info record has been found, otherwise it will be set at '0'.

LIC_SITE_NAME_CODE
This comes from the "LIC_SITE_NAME_CODE" field in the WI_LIC_SITENAMECODE table.
 
PLC_ID
This is the plc instance id.
 
INSERT_SEQ
This is a system generated sequence number. For each new record inserted, an unique sequence number is being assigned to this column.