# Table This schema defines the Table entity. A Table organizes data in rows and columns and is defined by a Schema. OpenMetadata does not have a separate abstraction for Schema. Both Table and Schema are captured in this entity. **$id:**[**https://open-metadata.org/schema/entity/data/table.json**](https://open-metadata.org/schema/entity/data/table.json) Type: `object` This schema does not accept additional properties. ## Properties - **id** `required` - Unique identifier of this table instance. - $ref: [../../type/basic.json#/definitions/uuid](../types/basic.md#uuid) - **name** `required` - Name of a table. Expected to be unique within a database. - $ref: [#/definitions/tableName](#tablename) - **displayName** - Display Name that identifies this table. It could be title or label from the source services. - Type: `string` - **fullyQualifiedName** - Fully qualified name of a table in the form `serviceName.databaseName.tableName`. - Type: `string` - **description** - Description of a table. - Type: `string` - **version** - Metadata version of the entity. - $ref: [../../type/entityHistory.json#/definitions/entityVersion](../types/entityhistory.md#entityversion) - **updatedAt** - Last update time corresponding to the new version of the entity. - $ref: [../../type/basic.json#/definitions/dateTime](../types/basic.md#datetime) - **updatedBy** - User who made the update. - Type: `string` - **href** - Link to this table resource. - $ref: [../../type/basic.json#/definitions/href](../types/basic.md#href) - **tableType** - $ref: [#/definitions/tableType](#tabletype) - **columns** `required` - Columns in this table. - Type: `array` - **Items** - $ref: [#/definitions/column](#column) - **tableConstraints** - Table constraints. - Type: `array` - **Items** - $ref: [#/definitions/tableConstraint](#tableconstraint) - **owner** - Owner of this table. - $ref: [../../type/entityReference.json](../types/entityreference.md) - **database** - Reference to Database that contains this table. - $ref: [../../type/entityReference.json](../types/entityreference.md) - **location** - Reference to the Location that contains this table. - $ref: [../../type/entityReference.json](../types/entityreference.md) - **viewDefinition** - View Definition in SQL. Applies to TableType.View only. - $ref: [../../type/basic.json#/definitions/sqlQuery](../types/basic.md#sqlquery) - **tags** - Tags for this table. - Type: `array` - **Items** - $ref: [../../type/tagLabel.json](../types/taglabel.md) - **usageSummary** - Latest usage information for this table. - $ref: [../../type/usageDetails.json](../types/usagedetails.md) - **followers** - Followers of this table. - $ref: [../../type/entityReference.json#/definitions/entityReferenceList](../types/entityreference.md#entityreferencelist) - **joins** - Details of other tables this table is frequently joined with. - $ref: [#/definitions/tableJoins](#tablejoins) - **sampleData** - Sample data for a table. - $ref: [#/definitions/tableData](#tabledata) - **tableProfile** - Data profile for a table. - Type: `array` - **Items** - $ref: [#/definitions/tableProfile](#tableprofile) - **tableQueries** - List of queries that ran against a table. - Type: `array` - **Items** - $ref: [#/definitions/sqlQuery](#sqlquery) - **changeDescription** - Change that lead to this version of the entity. - $ref: [../../type/entityHistory.json#/definitions/changeDescription](../types/entityhistory.md#changedescription) ## Type definitions in this schema ### tableType - This schema defines the type used for describing different types of tables. - Type: `string` - The value is restricted to the following: 1. _"Regular"_ 2. _"External"_ 3. _"View"_ 4. _"SecureView"_ 5. _"MaterializedView"_ ### dataType - This enum defines the type of data stored in a column. - Type: `string` - The value is restricted to the following: 1. _"NUMBER"_ 2. _"TINYINT"_ 3. _"SMALLINT"_ 4. _"INT"_ 5. _"BIGINT"_ 6. _"BYTEINT"_ 7. _"FLOAT"_ 8. _"DOUBLE"_ 9. _"DECIMAL"_ 10. _"NUMERIC"_ 11. _"TIMESTAMP"_ 12. _"TIME"_ 13. _"DATE"_ 14. _"DATETIME"_ 15. _"INTERVAL"_ 16. _"STRING"_ 17. _"MEDIUMTEXT"_ 18. _"TEXT"_ 19. _"CHAR"_ 20. _"VARCHAR"_ 21. _"BOOLEAN"_ 22. _"BINARY"_ 23. _"VARBINARY"_ 24. _"ARRAY"_ 25. _"BLOB"_ 26. _"LONGBLOB"_ 27. _"MEDIUMBLOB"_ 28. _"MAP"_ 29. _"STRUCT"_ 30. _"UNION"_ 31. _"SET"_ 32. _"GEOGRAPHY"_ 33. _"ENUM"_ 34. _"JSON"_ ### constraint - This enum defines the type for column constraint. - Type: `string` - The value is restricted to the following: 1. _"NULL"_ 2. _"NOT_NULL"_ 3. _"UNIQUE"_ 4. _"PRIMARY_KEY"_ ### tableConstraint - This enum defines the type for table constraint. - Type: `object` - **Properties** - **constraintType** - Type: `string` - The value is restricted to the following: 1. _"UNIQUE"_ 2. _"PRIMARY_KEY"_ 3. _"FOREIGN_KEY"_ - **columns** - List of column names corresponding to the constraint. - Type: `array` - **Items** - Type: `string` ### columnName - 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` - The value must match this pattern: `^[^.]*$` - Length: between 1 and 64 ### tableName - Local name (not fully qualified name) of a table. - Type: `string` - The value must match this pattern: `^[^.]*$` - Length: between 1 and 64 ### fullyQualifiedColumnName - Fully qualified name of the column that includes `serviceName.databaseName.tableName.columnName[.nestedColumnName]`. When columnName is null for dataType struct fields, `field_#` where `#` is field index is used. For map dataType, for key the field name `key` is used and for the value field `value` is used. - Type: `string` - Length: between 1 and 256 ### column - This schema defines the type for a column in a table. - Type: `object` - This schema does not accept additional properties. - **Properties** - **name** `required` - $ref: [#/definitions/columnName](#columnname) - **dataType** `required` - Data type of the column (int, date etc.). - $ref: [#/definitions/dataType](#datatype) - **arrayDataType** - Data type used array in dataType. For example, `array` has dataType as `array` and arrayDataType as `int`. - $ref: [#/definitions/dataType](#datatype) - **dataLength** - Length of `char`, `varchar`, `binary`, `varbinary` `dataTypes`, else null. For example, `varchar(20)` has dataType as `varchar` and dataLength as `20`. - Type: `integer` - **dataTypeDisplay** - Display name used for dataType. This is useful for complex types, such as `array, map, struct<>, and union types. - Type: `string` - **description** - Description of the column. - Type: `string` - **fullyQualifiedName** - $ref: [#/definitions/fullyQualifiedColumnName](#fullyqualifiedcolumnname) - **tags** - Tags associated with the column. - Type: `array` - **Items** - $ref: [../../type/tagLabel.json](../types/taglabel.md) - **constraint** - Column level constraint. - $ref: [#/definitions/constraint](#constraint) - **ordinalPosition** - Ordinal position of the column. - Type: `integer` - **jsonSchema** - Json schema only if the dataType is JSON else null. - Type: `string` - **children** - Child columns if dataType or arrayDataType is `map`, `struct`, or `union` else `null`. - Type: `array` - **Items** - $ref: [#/definitions/column](#column) ### columnJoins - This schema defines the type to capture how frequently a column is joined with columns in the other tables. - Type: `object` - This schema does not accept additional properties. - **Properties** - **columnName** - $ref: [#/definitions/columnName](#columnname) - **joinedWith** - Fully qualified names of the columns that this column is joined with. - Type: `array` - **Items** - Type: `object` - **Properties** - **fullyQualifiedName** - $ref: [#/definitions/fullyQualifiedColumnName](#fullyqualifiedcolumnname) - **joinCount** - Type: `integer` ### tableJoins - This schema defines the type to capture information about how columns in this table are joined with columns in the other tables. - Type: `object` - This schema does not accept additional properties. - **Properties** - **startDate** - Date can be only from today going back to last 29 days. - $ref: [../../type/basic.json#/definitions/date](../types/basic.md#date) - **dayCount** - Type: `integer` - Default: `1` - **columnJoins** - Type: `array` - **Items** - $ref: [#/definitions/columnJoins](#columnjoins) ### tableData - This schema defines the type to capture rows of sample data for a table. - Type: `object` - This schema does not accept additional properties. - **Properties** - **columns** - List of local column names (not fully qualified column names) of the table. - Type: `array` - **Items** - $ref: [#/definitions/columnName](#columnname) - **rows** - Data for multiple rows of the table. - Type: `array` - **Items** - Data for a single row of the table within the same order as columns fields. - Type: `array` ### columnProfile - This schema defines the type to capture the table's column profile. - Type: `object` - This schema does not accept additional properties. - **Properties** - **name** - Column Name. - Type: `string` - **uniqueCount** - No. of unique values in the column. - Type: `number` - **uniqueProportion** - Proportion of number of unique values in a column. - Type: `number` - **nullCount** - No.of null values in a column. - Type: `number` - **nullProportion** - No.of null value proportion in columns. - Type: `number` - **min** - Minimum value in a column. - Type: `string` - **max** - Maximum value in a column. - Type: `string` - **mean** - Avg value in a column. - Type: `string` - **median** - Median value in a column. - Type: `string` - **stddev** - Standard deviation of a column. - Type: `number` ### tableProfile - This schema defines the type to capture the table's data profile. - Type: `object` - This schema does not accept additional properties. - **Properties** - **profileDate** - Data one which profile is taken. - $ref: [../../type/basic.json#/definitions/date](../types/basic.md#date) - **columnCount** - No.of columns in the table. - Type: `number` - **rowCount** - No.of rows in the table. - Type: `number` - **columnProfile** - List of local column profiles of the table. - Type: `array` - **Items** - $ref: [#/definitions/columnProfile](#columnprofile) ### sqlQuery - This schema defines the type to capture the table's sql queries. - Type: `object` - **Properties** - **query** - SQL Query text that matches the table name. - Type: `string` - **duration** - How long did the query took to run in seconds. - Type: `number` - **user** - User who ran this query. - $ref: [../../type/entityReference.json](../types/entityreference.md) - **vote** - Users can vote up to rank the popular queries. - Type: `number` - Default: `1` - **checksum** - Checksum to avoid registering duplicate queries. - Type: `string` - **queryDate** - Date on which the query ran. - $ref: [../../type/basic.json#/definitions/date](../types/basic.md#date) _This document was updated on: Monday, November 15, 2021_