QlikView Expressor Schema and Semantic Type Cheat Sheet
If you receive similar warning (TODO) type messages in the Message Panel such as the ones below when using QlikView Expressor Desktop:
Read File 1:
Error: The Attribute "field1" is required by another operator downstream of this location, but this requirement has not been satisfied.
Write File 2:
Error: The Attribute "field1" is required by this operator, but this requirement has not been satisfied.
Please keep the following bullets in mind:
If a schema used for writing to a target has attributes in it that are not referenced or mapped in the dataflow (or read schema) you will see messages such as those above.
Schema used in Read File Operator
Schema used in Write Tabke Operator
In order to correct this - the WRITE TABLE Schema's Type OR the READ FILE Schema's Type must match.
This video will greatly help you SEE how it works:
Note this video was created prior to the QlikTech acquisition.
Schemas are used by READ and WRITE operators only
Schemas describe the PHYSICAL EXTERNAL FIELDS of source or target data and map to a collection of LOGICAL INTERNAL ATTRIBUTES called a Semantic Type
The LEFT side of a Schema contains the external PHYSICAL FIELDS
The MIDDLE of a Schema contains the mappings (some can be edited to translate data from one data type to another)
You use mappings to map data from the PHYSICAL FIELDS to the LOGICAL ATTRIBUTES in the Semantic Type
The RIGHT side of the Schema contains the INTERNAL LOGICAL ATTRIBUTES you can call this the Metadata
Semantic Types are used and referenced inside of Schemas - as local or shared composite types
The COLLECTION of logical attributes are called a Composite Semantic Type
By default when creating a schema from a physical file, table etc - it creates a local copy of the Semantic Type which is called a Local Composite Type
Semantic Type data types are generic or known as primitive - String, Integer, Decimal, Double,DateTime,Byte
Semantic Types can be defined as "Actionable" because they contain "Active Metadata" as you can assign constraints, default values, corrective actions and error handling all within the Type
Semantic Types can be SHARED and ASSIGNED to other Schemas to be reused
NOTE: Shared Semantic types RETAIN the rules (constraints, default values, corrective actions and error handling) defined in them - so be careful when using them in Transform and other operators as the data flowing through them migh trigger the rule and cause an error during the flow.
A Transform Operator that is used to transform existing data or create NEW attributes can also SHARE those Ouput Attributes and then have them ASSIGNed to a Schema that will be mapped to the target
Semantic Types' attribute NAMES AND DATA TYPES MUST ultimately match the target schema it is writing to
Reject Ports on READ Operators that connect to WRITE operators will have a different Schema layout (than the original read schema) and need to be created from Upstream output. Here are the attributes that are produced from the reject port.
RejectType - type of reject RecordNumber - the number of the data record that was rejected RecordData - a comma delimited string of the actual data values rejected encapsulated in quotes RejectReason - the reason the data was rejected RejectMessage - system generated additional messages
Reject Ports on WRITE Operators can use the same Schema Layout.