All Downloads are FREE. Search and download functionalities are using the official Maven repository.

json.schema.entity.data.table.json Maven / Gradle / Ivy

There is a newer version: 1.6.0-rc1
Show newest version
{
  "$id": "https://open-metadata.org/schema/entity/data/table.json",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Table",
  "$comment": "@om-entity-type",
  "description": "A `Table` entity organizes data in rows and columns and is defined in a `Database Schema`.",
  "type": "object",
  "javaType": "org.openmetadata.schema.entity.data.Table",
  "javaInterfaces": [
    "org.openmetadata.schema.EntityInterface", "org.openmetadata.schema.ColumnsEntityInterface"
  ],
  "definitions": {
    "profileSampleType": {
      "description": "Type of Profile Sample (percentage or rows)",
      "type": "string",
      "enum": [
        "PERCENTAGE",
        "ROWS"
      ],
      "default": "PERCENTAGE"
    },
    "tableType": {
      "javaType": "org.openmetadata.schema.type.TableType",
      "description": "This schema defines the type used for describing different types of tables.",
      "type": "string",
      "enum": [
        "Regular",
        "External",
        "Dynamic",
        "View",
        "SecureView",
        "MaterializedView",
        "Iceberg",
        "Local",
        "Partitioned",
        "Foreign",
        "Transient"
      ],
      "javaEnums": [
        {
          "name": "Regular"
        },
        {
          "name": "External"
        },
        {
          "name": "Dynamic"
        },
        {
          "name": "View"
        },
        {
          "name": "SecureView"
        },
        {
          "name": "MaterializedView"
        },
        {
          "name": "Iceberg"
        },
        {
          "name": "Local"
        },
        {
          "name": "Partitioned"
        },
        {
          "name": "Foreign"
        },
        {
          "name": "Transient"
        }
      ]
    },
    "dataType": {
      "javaType": "org.openmetadata.schema.type.ColumnDataType",
      "description": "This enum defines the type of data stored in a column.",
      "type": "string",
      "enum": [
        "NUMBER",
        "TINYINT",
        "SMALLINT",
        "INT",
        "BIGINT",
        "BYTEINT",
        "BYTES",
        "FLOAT",
        "DOUBLE",
        "DECIMAL",
        "NUMERIC",
        "TIMESTAMP",
        "TIMESTAMPZ",
        "TIME",
        "DATE",
        "DATETIME",
        "INTERVAL",
        "STRING",
        "MEDIUMTEXT",
        "TEXT",
        "CHAR",
        "LONG",
        "VARCHAR",
        "BOOLEAN",
        "BINARY",
        "VARBINARY",
        "ARRAY",
        "BLOB",
        "LONGBLOB",
        "MEDIUMBLOB",
        "MAP",
        "STRUCT",
        "UNION",
        "SET",
        "GEOGRAPHY",
        "ENUM",
        "JSON",
        "UUID",
        "VARIANT",
        "GEOMETRY",
        "BYTEA",
        "AGGREGATEFUNCTION",
        "ERROR",
        "FIXED",
        "RECORD",
        "NULL",
        "SUPER",
        "HLLSKETCH",
        "PG_LSN",
        "PG_SNAPSHOT",
        "TSQUERY",
        "TXID_SNAPSHOT",
        "XML",
        "MACADDR",
        "TSVECTOR",
        "UNKNOWN",
        "CIDR",
        "INET",
        "CLOB",
        "ROWID",
        "LOWCARDINALITY",
        "YEAR",
        "POINT",
        "POLYGON",
        "TUPLE",
        "SPATIAL",
        "TABLE",
        "NTEXT",
        "IMAGE",
        "IPV4",
        "IPV6",
        "DATETIMERANGE",
        "HLL",
        "LARGEINT",
        "QUANTILE_STATE",
        "AGG_STATE",
        "BITMAP",
        "UINT",
        "BIT",
        "MONEY"
      ]
    },
    "constraint": {
      "javaType": "org.openmetadata.schema.type.ColumnConstraint",
      "description": "This enum defines the type for column constraint.",
      "type": "string",
      "enum": [
        "NULL",
        "NOT_NULL",
        "UNIQUE",
        "PRIMARY_KEY"
      ],
      "default": null,
      "additionalProperties": false
    },
    "tableConstraint": {
      "type": "object",
      "javaType": "org.openmetadata.schema.type.TableConstraint",
      "title": "TableConstraint",
      "description": "This enum defines the type for table constraint.",
      "properties": {
        "constraintType": {
          "type": "string",
          "enum": [
            "UNIQUE",
            "PRIMARY_KEY",
            "FOREIGN_KEY",
            "SORT_KEY",
            "DIST_KEY"
          ]
        },
        "columns": {
          "description": "List of column names corresponding to the constraint.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "referredColumns": {
          "description": "List of referred columns for the constraint.",
          "type": "array",
          "items": {
            "$ref": "../../type/basic.json#/definitions/fullyQualifiedEntityName"
          },
          "default": null
        }
      },
      "additionalProperties": false
    },
    "columnName": {
      "description": "Local name (not fully qualified name) of the column. ColumnName is `-` when the column is not named in struct dataType. For example, BigQuery supports struct with unnamed fields.",
      "type": "string",
      "minLength": 1,
      "maxLength": 256,
      "pattern": "^((?!::).)*$"
    },
    "partitionIntervalTypes": {
      "javaType": "org.openmetadata.schema.type.PartitionIntervalTypes",
      "description": "type of partition interval",
      "type": "string",
      "enum": [
        "TIME-UNIT",
        "INTEGER-RANGE",
        "INGESTION-TIME",
        "COLUMN-VALUE",
        "INJECTED",
        "ENUM",
        "OTHER"
      ]
    },
    "tablePartition": {
      "type": "object",
      "javaType": "org.openmetadata.schema.type.TablePartition",
      "description": "This schema defines the partition column of a table and format the partition is created.",
      "properties": {
        "columns": {
          "description": "List of column partitions with their type and interval.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/partitionColumnDetails"
          }
        }
      },
      "additionalProperties": false
    },
    "partitionColumnDetails": {
      "type": "object",
      "javaType": "org.openmetadata.schema.type.PartitionColumnDetails",
      "description": "This schema defines the partition column of a table and format the partition is created.",
      "properties": {
        "columnName": {
          "description": "List of column names corresponding to the partition.",
          "type": "string"
        },
        "intervalType": {
          "$ref": "#/definitions/partitionIntervalTypes"
        },
        "interval": {
          "type": "string",
          "description": "partition interval , example hourly, daily, monthly."
        }
      },
      "additionalProperties": false
    },
    "column": {
      "type": "object",
      "javaType": "org.openmetadata.schema.type.Column",
      "javaInterfaces": ["org.openmetadata.schema.FieldInterface"],
      "description": "This schema defines the type for a column in a table.",
      "properties": {
        "name": {
          "$ref": "#/definitions/columnName"
        },
        "displayName": {
          "description": "Display Name that identifies this column name.",
          "type": "string"
        },
        "dataType": {
          "description": "Data type of the column (int, date etc.).",
          "$ref": "#/definitions/dataType"
        },
        "arrayDataType": {
          "description": "Data type used array in dataType. For example, `array` has dataType as `array` and arrayDataType as `int`.",
          "$ref": "#/definitions/dataType"
        },
        "dataLength": {
          "description": "Length of `char`, `varchar`, `binary`, `varbinary` `dataTypes`, else null. For example, `varchar(20)` has dataType as `varchar` and dataLength as `20`.",
          "type": "integer"
        },
        "precision": {
          "description": "The precision of a numeric is the total count of significant digits in the whole number, that is, the number of digits to both sides of the decimal point. Precision is applicable Integer types, such as `INT`, `SMALLINT`, `BIGINT`, etc. It also applies to other Numeric types, such as `NUMBER`, `DECIMAL`, `DOUBLE`, `FLOAT`, etc.",
          "type": "integer"
        },
        "scale": {
          "description": "The scale of a numeric is the count of decimal digits in the fractional part, to the right of the decimal point. For Integer types, the scale is `0`. It mainly applies to non Integer Numeric types, such as `NUMBER`, `DECIMAL`, `DOUBLE`, `FLOAT`, etc.",
          "type": "integer"
        },
        "dataTypeDisplay": {
          "description": "Display name used for dataType. This is useful for complex types, such as `array`, `map`, `struct<>`, and union types.",
          "type": "string"
        },
        "description": {
          "description": "Description of the column.",
          "$ref": "../../type/basic.json#/definitions/markdown"
        },
        "fullyQualifiedName": {
          "$ref": "../../type/basic.json#/definitions/fullyQualifiedEntityName"
        },
        "tags": {
          "description": "Tags associated with the column.",
          "type": "array",
          "items": {
            "$ref": "../../type/tagLabel.json"
          },
          "default": null
        },
        "constraint": {
          "description": "Column level constraint.",
          "$ref": "#/definitions/constraint"
        },
        "ordinalPosition": {
          "description": "Ordinal position of the column.",
          "type": "integer"
        },
        "jsonSchema": {
          "description": "Json schema only if the dataType is JSON else null.",
          "type": "string"
        },
        "children": {
          "description": "Child columns if dataType or arrayDataType is `map`, `struct`, or `union` else `null`.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/column"
          },
          "default": null
        },
        "profile": {
          "description": "Latest Data profile for a Column.",
          "$ref": "#/definitions/columnProfile",
          "default": null
        },
        "customMetrics": {
          "description": "List of Custom Metrics registered for a table.",
          "type": "array",
          "items": {
            "$ref": "../../tests/customMetric.json"
          },
          "default": null
        }
      },
      "required": [
        "name",
        "dataType"
      ],
      "additionalProperties": false
    },
    "joinedWith": {
      "description": "Fully qualified names of the fields/entities that this field/entity is joined with.",
      "type": "object",
      "properties": {
        "fullyQualifiedName": {
          "$ref": "../../type/basic.json#/definitions/fullyQualifiedEntityName"
        },
        "joinCount": {
          "type": "integer"
        }
      },
      "required": [
        "fullyQualifiedName",
        "joinCount"
      ],
      "additionalProperties": false
    },
    "columnJoins": {
      "type": "object",
      "javaType": "org.openmetadata.schema.type.ColumnJoin",
      "description": "This schema defines the type to capture how frequently a column is joined with columns in the other tables.",
      "properties": {
        "columnName": {
          "$ref": "#/definitions/columnName"
        },
        "joinedWith": {
          "description": "Fully qualified names of the columns that this column is joined with.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/joinedWith"
          }
        }
      },
      "additionalProperties": false
    },
    "tableJoins": {
      "type": "object",
      "javaType": "org.openmetadata.schema.type.TableJoins",
      "description": "This schema defines the type to capture information about how this table is joined with other tables and columns.",
      "properties": {
        "startDate": {
          "description": "Date can be only from today going back to last 29 days.",
          "$ref": "../../type/basic.json#/definitions/date"
        },
        "dayCount": {
          "type": "integer",
          "default": 1
        },
        "columnJoins": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/columnJoins"
          }
        },
        "directTableJoins": {
          "description": "Joins with other tables that are not on a specific column (e.g: UNION join)",
          "type": "array",
          "items": {
            "$ref": "#/definitions/joinedWith"
          }
        }
      },
      "additionalProperties": false
    },
    "tableData": {
      "type": "object",
      "javaType": "org.openmetadata.schema.type.TableData",
      "description": "This schema defines the type to capture rows of sample data for a table.",
      "properties": {
        "columns": {
          "description": "List of local column names (not fully qualified column names) of the table.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/columnName"
          }
        },
        "rows": {
          "description": "Data for multiple rows of the table.",
          "type": "array",
          "items": {
            "description": "Data for a single row of the table within the same order as columns fields.",
            "type": "array"
          }
        }
      },
      "additionalProperties": false
    },
    "customMetricProfile": {
      "type": "object",
      "javaType": "org.openmetadata.schema.type.CustomMetricProfile",
      "description": "Profiling results of a Custom Metric.",
      "properties": {
        "name": {
          "description": "Custom metric name.",
          "type": "string"
        },
        "value": {
          "description": "Profiling results for the metric.",
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "columnProfile": {
      "type": "object",
      "javaType": "org.openmetadata.schema.type.ColumnProfile",
      "description": "This schema defines the type to capture the table's column profile.",
      "properties": {
        "name": {
          "description": "Column Name.",
          "type": "string"
        },
        "timestamp": {
          "description": "Timestamp on which profile is taken.",
          "$ref": "../../type/basic.json#/definitions/timestamp"
        },
        "valuesCount": {
          "description": "Total count of the values in this column.",
          "type": "number"
        },
        "valuesPercentage": {
          "description": "Percentage of values in this column with respect to row count.",
          "type": "number"
        },
        "validCount": {
          "description": "Total count of valid values in this column.",
          "type": "number"
        },
        "duplicateCount": {
          "description": "No.of Rows that contain duplicates in a column.",
          "type": "number"
        },
        "nullCount": {
          "description": "No.of null values in a column.",
          "type": "number"
        },
        "nullProportion": {
          "description": "No.of null value proportion in columns.",
          "type": "number"
        },
        "missingPercentage": {
          "description": "Missing Percentage is calculated by taking percentage of validCount/valuesCount.",
          "type": "number"
        },
        "missingCount": {
          "description": "Missing count is calculated by subtracting valuesCount - validCount.",
          "type": "number"
        },
        "uniqueCount": {
          "description": "No. of unique values in the column.",
          "type": "number"
        },
        "uniqueProportion": {
          "description": "Proportion of number of unique values in a column.",
          "type": "number"
        },
        "distinctCount": {
          "description": "Number of values that contain distinct values.",
          "type": "number"
        },
        "distinctProportion": {
          "description": "Proportion of distinct values in a column.",
          "type": "number"
        },
        "min": {
          "description": "Minimum value in a column.",
          "oneOf": [
            {
              "type": "number"
            },
            {
              "type": "integer"
            },
            {
              "$ref": "../../type/basic.json#/definitions/dateTime"
            },
            {
              "$ref": "../../type/basic.json#/definitions/time"
            },
            {
              "$ref": "../../type/basic.json#/definitions/date"
            },
            {
              "type": "string"
            }
          ]
        },
        "max": {
          "description": "Maximum value in a column.",
          "oneOf": [
            {
              "type": "number"
            },
            {
              "type": "integer"
            },
            {
              "$ref": "../../type/basic.json#/definitions/dateTime"
            },
            {
              "$ref": "../../type/basic.json#/definitions/time"
            },
            {
              "$ref": "../../type/basic.json#/definitions/date"
            },
            {
              "type": "string"
            }
          ]
        },
        "minLength": {
          "description": "Minimum string length in a column.",
          "type": "number"
        },
        "maxLength": {
          "description": "Maximum string length in a column.",
          "type": "number"
        },
        "mean": {
          "description": "Avg value in a column.",
          "type": "number"
        },
        "sum": {
          "description": "Median value in a column.",
          "type": "number"
        },
        "stddev": {
          "description": "Standard deviation of a column.",
          "type": "number"
        },
        "variance": {
          "description": "Variance of a column.",
          "type": "number"
        },
        "median": {
          "description": "Median of a column.",
          "type": "number"
        },
        "firstQuartile": {
          "description": "First quartile of a column.",
          "type": "number"
        },
        "thirdQuartile": {
          "description": "First quartile of a column.",
          "type": "number"
        },
        "interQuartileRange": {
          "description": "Inter quartile range of a column.",
          "type": "number"
        },
        "nonParametricSkew": {
          "description": "Non parametric skew of a column.",
          "type": "number"
        },
        "histogram": {
          "description": "Histogram of a column.",
          "properties": {
            "boundaries": {
              "description": "Boundaries of Histogram.",
              "type": "array"
            },
            "frequencies": {
              "description": "Frequencies of Histogram.",
              "type": "array"
            }
          },
          "additionalProperties": false
        },
        "customMetrics": {
          "description": "Custom Metrics profile list bound to a column.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/customMetricProfile"
          },
          "default": null
        }
      },
      "required": [
        "name",
        "timestamp"
      ],
      "additionalProperties": false
    },
    "dmlOperationType": {
      "javaType": "org.openmetadata.schema.type.DmlOperationType",
      "description": "This schema defines the type of DML operation.",
      "type": "string",
      "enum": [
        "UPDATE",
        "INSERT",
        "DELETE"
      ]
    },
    "systemProfile": {
      "description": "This schema defines the System Profile object holding profile data from system tables.",
      "type": "object",
      "javaType": "org.openmetadata.schema.type.SystemProfile",
      "properties": {
        "timestamp": {
          "description": "Timestamp on which profile is taken.",
          "$ref": "../../type/basic.json#/definitions/timestamp"
        },
        "operation": {
          "description": "Operation performed.",
          "$ref": "#/definitions/dmlOperationType"
        },
        "rowsAffected": {
          "description": "Number of rows affected.",
          "type": "integer"
        }
      }
    },
    "columnProfilerConfig": {
      "description": "This schema defines the type for Table profile config include Columns.",
      "type": "object",
      "javaType": "org.openmetadata.schema.type.ColumnProfilerConfig",
      "properties": {
        "columnName": {
          "description": "Column Name of the table to be included.",
          "type": "string"
        },
        "metrics": {
          "description": "Include only following metrics.",
          "type": "array",
          "items": {
            "type": "string"
          },
          "default": null
        }
      }
    },
    "partitionProfilerConfig": {
      "description": "This schema defines the partition configuration used by profiler.",
      "type": "object",
      "javaType": "org.openmetadata.schema.type.PartitionProfilerConfig",
      "properties": {
        "enablePartitioning": {
          "description": "whether to use partition",
          "type": "boolean",
          "default": false
        },
        "partitionColumnName": {
          "description": "name of the column to use for the partition",
          "type": "string"
        },
        "partitionIntervalType": {
          "$ref": "#/definitions/partitionIntervalTypes"
        },
        "partitionInterval": {
          "description": "The interval to use for the partitioning",
          "type": "integer"
        },
        "partitionIntervalUnit": {
          "description": "unit used for the partition interval",
          "type": "string",
          "enum": [
            "YEAR",
            "MONTH",
            "DAY",
            "HOUR"
          ]
        },
        "partitionValues": {
          "description": "unit used for the partition interval",
          "type": "array"
        },
        "partitionIntegerRangeStart": {
          "description": "start of the integer range for partitioning",
          "type": "integer",
          "default": null
        },
        "partitionIntegerRangeEnd": {
          "description": "end of the integer range for partitioning",
          "type": "integer",
          "default": null
        }
      }
    },
    "tableProfilerConfig": {
      "type": "object",
      "javaType": "org.openmetadata.schema.type.TableProfilerConfig",
      "description": "This schema defines the type for Table profile config.",
      "properties": {
        "profileSampleType": {
          "$ref": "#/definitions/profileSampleType"
        },
        "profileSample": {
          "description": "Percentage of data or no. of rows used to compute the profiler metrics and run data quality tests",
          "type": "number",
          "default": null
        },
        "sampleDataCount": {
          "description": "Number of sample rows to ingest when 'Generate Sample Data' is enabled",
          "type": "integer",
          "default": 50,
          "title": "Sample Data Rows Count"
        },
        "profileQuery": {
          "description": "Users' raw SQL query to fetch sample data and profile the table",
          "type": "string",
          "default": null
        },
        "excludeColumns": {
          "description": "column names to exclude from profiling.",
          "type": "array",
          "items": {
            "type": "string"
          },
          "default": null
        },
        "includeColumns": {
          "description": "Only run profiler on included columns with specific metrics.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/columnProfilerConfig"
          },
          "default": null
        },
        "partitioning": {
          "description": "Partitioning configuration",
          "$ref": "#/definitions/partitionProfilerConfig"
        }
      }
    },
    "tableProfile": {
      "type": "object",
      "javaType": "org.openmetadata.schema.type.TableProfile",
      "description": "This schema defines the type to capture the table's data profile.",
      "properties": {
        "timestamp": {
          "description": "Timestamp on which profile is taken.",
          "$ref": "../../type/basic.json#/definitions/timestamp"
        },
        "profileSample": {
          "description": "Percentage of data or no. of rows we want to execute the profiler and tests on",
          "type": "number",
          "default": null
        },
        "profileSampleType": {
          "$ref": "#/definitions/profileSampleType"
        },
        "columnCount": {
          "description": "No.of columns in the table.",
          "type": "number"
        },
        "rowCount": {
          "description": "No.of rows in the table. This is always executed on the whole table.",
          "type": "number"
        },
        "sizeInByte": {
          "description": "Table size in GB",
          "type": "number"
        },
        "createDateTime": {
          "description": "Table creation time.",
          "type": "string",
          "format": "date-time"
        },
        "customMetrics": {
          "description": "Custom Metrics profile list bound to a column.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/customMetricProfile"
          },
          "default": null
        }
      },
      "required": [
        "timestamp"
      ],
      "additionalProperties": false
    },
    "modelType": {
      "$comment": "Currently only DBT and DDL model type is supported",
      "enum": [
        "DBT",
        "DDL"
      ],
      "javaEnums": [
        {
          "name": "DBT"
        },
        {
          "name": "DDL"
        }
      ]
    },
    "dataModel": {
      "description": "This captures information about how the table is modeled. Currently only DBT and DDL model is supported.",
      "type": "object",
      "javaType": "org.openmetadata.schema.type.DataModel",
      "properties": {
        "modelType": {
          "$ref": "#/definitions/modelType"
        },
        "resourceType": {
          "description": "Resource Type of the model.",
          "type": "string"
        },
        "description": {
          "description": "Description of the Table from the model.",
          "$ref": "../../type/basic.json#/definitions/markdown"
        },
        "path": {
          "description": "Path to sql definition file.",
          "type": "string"
        },
        "rawSql": {
          "description": "This corresponds to rws SQL from `.sql` in DBT. This might be null when SQL query need not be compiled as done in DBT.",
          "$ref": "../../type/basic.json#/definitions/sqlQuery"
        },
        "sql": {
          "description": "This corresponds to compile SQL from `.sql` in DBT. In cases where compilation is not necessary, this corresponds to SQL that created the table.",
          "$ref": "../../type/basic.json#/definitions/sqlQuery"
        },
        "upstream": {
          "description": "Fully qualified name of Models/tables used for in `sql` for creating this table.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "owners": {
          "description": "Owners of this Table.",
          "$ref": "../../type/entityReferenceList.json",
          "default": null
        },
        "tags": {
          "description": "Tags for this data model.",
          "type": "array",
          "items": {
            "$ref": "../../type/tagLabel.json"
          },
          "default": null
        },
        "columns": {
          "description": "Columns from the schema defined during modeling. In case of DBT, the metadata here comes from `schema.yaml`.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/column"
          },
          "default": null
        },
        "generatedAt": {
          "$ref": "../../type/basic.json#/definitions/dateTime"
        }
      },
      "required": [
        "modelType"
      ],
      "additionalProperties": false
    },
    "fileFormat": {
      "description": "File format in case of file/datalake tables.",
      "type": "string",
      "enum": ["csv", "tsv", "avro", "parquet", "json", "json.gz", "json.zip", "jsonl", "jsonl.gz", "jsonl.zip"]
    }
  },
  "properties": {
    "id": {
      "description": "Unique identifier of this table instance.",
      "$ref": "../../type/basic.json#/definitions/uuid"
    },
    "name": {
      "description": "Name of a table. Expected to be unique within a database.",
      "$ref": "../../type/basic.json#/definitions/entityName"
    },
    "displayName": {
      "description": "Display Name that identifies this table. It could be title or label from the source services.",
      "type": "string"
    },
    "fullyQualifiedName": {
      "description": "Fully qualified name of a table in the form `serviceName.databaseName.tableName`.",
      "$ref": "../../type/basic.json#/definitions/fullyQualifiedEntityName"
    },
    "description": {
      "description": "Description of a table.",
      "$ref": "../../type/basic.json#/definitions/markdown"
    },
    "version": {
      "description": "Metadata version of the entity.",
      "$ref": "../../type/entityHistory.json#/definitions/entityVersion"
    },
    "updatedAt": {
      "description": "Last update time corresponding to the new version of the entity in Unix epoch time milliseconds.",
      "$ref": "../../type/basic.json#/definitions/timestamp"
    },
    "updatedBy": {
      "description": "User who made the update.",
      "type": "string"
    },
    "href": {
      "description": "Link to this table resource.",
      "$ref": "../../type/basic.json#/definitions/href"
    },
    "tableType": {
      "$ref": "#/definitions/tableType"
    },
    "columns": {
      "description": "Columns in this table.",
      "type": "array",
      "items": {
        "$ref": "#/definitions/column"
      },
      "default": null
    },
    "tableConstraints": {
      "description": "Table constraints.",
      "type": "array",
      "items": {
        "title": "TableConstraint",
        "$ref": "#/definitions/tableConstraint"
      },
      "default": null
    },
    "tablePartition": {
      "$ref": "#/definitions/tablePartition"
    },
    "owners": {
      "description": "Owners of this table.",
      "$ref": "../../type/entityReferenceList.json",
      "default": null
    },
    "databaseSchema": {
      "description": "Reference to database schema that contains this table.",
      "$ref": "../../type/entityReference.json"
    },
    "database": {
      "description": "Reference to Database that contains this table.",
      "$ref": "../../type/entityReference.json"
    },
    "service": {
      "description": "Link to Database service this table is hosted in.",
      "$ref": "../../type/entityReference.json"
    },
    "serviceType": {
      "description": "Service type this table is hosted in.",
      "$ref": "../services/databaseService.json#/definitions/databaseServiceType"
    },
    "location": {
      "description": "Reference to the Location that contains this table.",
      "$ref": "../../type/entityReference.json"
    },
    "schemaDefinition": {
      "description": "DDL for Tables and Views",
      "$ref": "../../type/basic.json#/definitions/sqlQuery"
    },
    "tags": {
      "description": "Tags for this table.",
      "type": "array",
      "items": {
        "$ref": "../../type/tagLabel.json"
      },
      "default": null
    },
    "usageSummary": {
      "description": "Latest usage information for this table.",
      "$ref": "../../type/usageDetails.json",
      "default": null
    },
    "followers": {
      "description": "Followers of this table.",
      "$ref": "../../type/entityReferenceList.json"
    },
    "joins": {
      "description": "Details of other tables this table is frequently joined with.",
      "$ref": "#/definitions/tableJoins",
      "default": null
    },
    "sampleData": {
      "description": "Sample data for a table.",
      "$ref": "#/definitions/tableData",
      "default": null
    },
    "tableProfilerConfig": {
      "description": "Table Profiler Config to include or exclude columns from profiling.",
      "$ref": "#/definitions/tableProfilerConfig"
    },
    "customMetrics": {
      "description": "List of Custom Metrics registered for a table.",
      "type": "array",
      "items": {
        "$ref": "../../tests/customMetric.json"
      },
      "default": null
    },
    "profile": {
      "description": "Latest Data profile for a table.",
      "$ref": "#/definitions/tableProfile",
      "default": null
    },
    "testSuite": {
      "description": "Executable test suite associated with this table",
      "$ref": "../../type/entityReference.json"
    },
    "dataModel": {
      "description": "This captures information about how the table is modeled. Currently only DBT model is supported.",
      "$ref": "#/definitions/dataModel"
    },
    "changeDescription": {
      "description": "Change that lead to this version of the entity.",
      "$ref": "../../type/entityHistory.json#/definitions/changeDescription"
    },
    "deleted": {
      "description": "When `true` indicates the entity has been soft deleted.",
      "type": "boolean",
      "default": false
    },
    "retentionPeriod" : {
      "description": "Retention period of the data in the table. Period is expressed as duration in ISO 8601 format in UTC. Example - `P23DT23H`. When not set, the retention period is inherited from the parent database schema, if it exists.",
      "$ref": "../../type/basic.json#/definitions/duration"
    },
    "extension": {
      "description": "Entity extension data with custom attributes added to the entity.",
      "$ref": "../../type/basic.json#/definitions/entityExtension"
    },
    "sourceUrl": {
      "description": "Source URL of table.",
      "$ref": "../../type/basic.json#/definitions/sourceUrl"
    },
    "domain" : {
      "description": "Domain the asset belongs to. When not set, the asset inherits the domain from the parent it belongs to.",
      "$ref": "../../type/entityReference.json"
    },
    "dataProducts" : {
      "description": "List of data products this entity is part of.",
      "$ref" : "../../type/entityReferenceList.json"
    },
    "fileFormat": {
      "description": "File format in case of file/datalake tables.",
      "$ref" : "#/definitions/fileFormat"
    },
    "votes" : {
      "description": "Votes on the entity.",
      "$ref": "../../type/votes.json"
    },
    "lifeCycle": {
      "description": "Life Cycle of the entity",
      "$ref": "../../type/lifeCycle.json"
    },
    "sourceHash": {
      "description": "Source hash of the entity",
      "type": "string",
      "minLength": 1,
      "maxLength": 32
    }
  },
  "required": [
    "id",
    "name",
    "columns"
  ],
  "additionalProperties": false
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy