Table of Contents

About

A data definition is a serie of properties in yaml format that defines the data structure and attributes of a a data resource.

Usage

Data definition file

If you have a file with the logical name foo, you may defined its data definition by creating the yaml file foo–datadef.yml in the same directory.

Inline Data Definition

The define operation uses this format to define inline data resources.

Generator

The resource generator uses this format to define the data generated and their parameters.

Structure

Common

The following data definition file shows the common structure of all data definition file that defines the name of the tabular structure and its columns.

LogicalName: LogicalName
PrimaryColumns: [ "column_name1", "column_name2" ]
Columns:
  - name: column_name1
    Type:
    Precision:
    Scale:
    Comment:
    Position: 1
  - name: column_name2
    Type:
    Precision:
    Scale:
    Comment:
  .....
Request:
    header: X-HTTP-header
    Accept: ...

where:

  • logicalName is the logical name of the resource (Default to the name of the file without structure information).
  • columns defines a list of column
    • name is the name of the column
    • type is the data type of a column (Default: varchar)
    • precision is the precision of the data type (Default value of the data type)
    • scale is the scale of the data type (Default value of the data type)
    • comment is a comment on the column
    • position is the physical column position
  • primaryColumns defines a list of column names that compose the primary key.
  • request are request attributes used when the resource is dynamic (mostly used to defined http resource)

Example:

LogicalName: Date
Columns:
  - name: DATE_ID
    Type: Date
  - name: MONTH_ID
    Type: Varchar
    Precision: 6
  - name: MONTH_NUMBER
    Type: Integer
  - name: MONTH_NAME
    Type: Varchar
    Precision: 20
  - name: MONTH_DESC
    Type: Varchar
    Precision: 20
  - name: MONTH_DESC_SHORT
    Type: Varchar
    Precision: 10
  - name: YEAR_NUMBER
    Type: Varchar
    Precision: 4

Extra Attribute

Each action may need additional information about a table or a column. This information can be added at each level (table or column) as a attribute (ie property).

DataResourceAttribute1: value1
Columns:
    - name: column_name
      ColumnProperty1: value1
....

where:

A Property value may be:

  • a scalar (ie single value)
  • a list
  • or a mapping

The column data generators use them to define data generations arguments.