Skip to content

Running example

Running example

To summarize the overall example — we want to have CustomDataset, CustomTable and CustomField assets.

  • These assets are related to each other in a hierarchy of parent-child relationships:
    • CustomDataset to CustomTable, through customTables
    • CustomTable to CustomField, through customFields
  • All of these assets have a number of attributes:
    • Some common (like customSourceId, customDatasetName and customDatasetQualifiedName).
    • Others unique (like customTemperature and customRatings).
  • Some of these attributes themselves have a set of restricted values (customTemperature) or are a nested set of information (customRatings).
  • Most of the attributes capture only a single value (customSourceId and customTemperature) but some allow multiple values (customRatings).

To help explain how this all works, we'll use this fictional example of a metadata model we want to set up:

erDiagram
    Connection ||..o{ CustomDataset : ""
    CustomDataset {
        string customSourceId
        string customDatasetName
        string customDatasetQualifiedName
    }
    CustomDataset ||--o{ CustomTable : customTables
    CustomTable {
        string customSourceId
        string customDatasetName
        string customDatasetQualifiedName
        struct[] customRatings
    }
    CustomTable ||--o{ CustomField : customFields
    CustomField {
        string customSourceId
        string customDatasetName
        string customDatasetQualifiedName
        string tableName
        string tableQualifiedName
        enum customTemperature
    }
    "CustomTemperature(Enum)" |o--o{ CustomField : ""
    "CustomTemperature(Enum)" {
        val HOT "highly available"
        val COLD "offline storage"
    }
    "CustomRating(Struct)" |o--o{ CustomTable : ""
    "CustomRating(Struct)" {
        string customRatingFrom
        long customRatingOf
    }