datahub/assets/js/e069d898.4d8b51f7.js
2025-08-08 21:37:06 +00:00

1 line
44 KiB
JavaScript

"use strict";(self.webpackChunkdocs_website=self.webpackChunkdocs_website||[]).push([[96076],{15680:(e,n,t)=>{t.d(n,{xA:()=>d,yg:()=>h});var a=t(96540);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function r(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){o(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function s(e,n){if(null==e)return{};var t,a,o=function(e,n){if(null==e)return{};var t,a,o={},i=Object.keys(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var l=a.createContext({}),c=function(e){var n=a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):r(r({},n),e)),t},d=function(e){var n=c(e.components);return a.createElement(l.Provider,{value:n},e.children)},m="mdxType",p={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},u=a.forwardRef((function(e,n){var t=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),m=c(t),u=o,h=m["".concat(l,".").concat(u)]||m[u]||p[u]||i;return t?a.createElement(h,r(r({ref:n},d),{},{components:t})):a.createElement(h,r({ref:n},d))}));function h(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var i=t.length,r=new Array(i);r[0]=u;var s={};for(var l in n)hasOwnProperty.call(n,l)&&(s[l]=n[l]);s.originalType=e,s[m]="string"==typeof e?e:o,r[1]=s;for(var c=2;c<i;c++)r[c]=t[c];return a.createElement.apply(null,r)}return a.createElement.apply(null,t)}u.displayName="MDXCreateElement"},27667:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>h,frontMatter:()=>s,metadata:()=>c,toc:()=>m});t(96540);var a=t(15680);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){return n=null!=n?n:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):function(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})),e}function r(e,n){if(null==e)return{};var t,a,o=function(e,n){if(null==e)return{};var t,a,o={},i=Object.keys(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)t=i[a],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}const s={sidebar_position:31,title:"ErModelRelationship",slug:"/generated/metamodel/entities/ermodelrelationship",custom_edit_url:"https://github.com/datahub-project/datahub/blob/master/docs/generated/metamodel/entities/erModelRelationship.md"},l="ErModelRelationship",c={unversionedId:"docs/generated/metamodel/entities/erModelRelationship",id:"version-1.1.0/docs/generated/metamodel/entities/erModelRelationship",title:"ErModelRelationship",description:"ER Model Relationship of Dataset Fields",source:"@site/versioned_docs/version-1.1.0/docs/generated/metamodel/entities/erModelRelationship.md",sourceDirName:"docs/generated/metamodel/entities",slug:"/generated/metamodel/entities/ermodelrelationship",permalink:"/docs/1.1.0/generated/metamodel/entities/ermodelrelationship",draft:!1,editUrl:"https://github.com/datahub-project/datahub/blob/master/docs/generated/metamodel/entities/erModelRelationship.md",tags:[],version:"1.1.0",sidebarPosition:31,frontMatter:{sidebar_position:31,title:"ErModelRelationship",slug:"/generated/metamodel/entities/ermodelrelationship",custom_edit_url:"https://github.com/datahub-project/datahub/blob/master/docs/generated/metamodel/entities/erModelRelationship.md"},sidebar:"overviewSidebar",previous:{title:"DataHubView",permalink:"/docs/1.1.0/generated/metamodel/entities/datahubview"},next:{title:"Query",permalink:"/docs/1.1.0/generated/metamodel/entities/query"}},d={},m=[{value:"Aspects",id:"aspects",level:2},{value:"erModelRelationshipProperties",id:"ermodelrelationshipproperties",level:3},{value:"editableERModelRelationshipProperties",id:"editableermodelrelationshipproperties",level:3},{value:"institutionalMemory",id:"institutionalmemory",level:3},{value:"ownership",id:"ownership",level:3},{value:"status",id:"status",level:3},{value:"globalTags",id:"globaltags",level:3},{value:"glossaryTerms",id:"glossaryterms",level:3},{value:"Relationships",id:"relationships",level:2},{value:"Outgoing",id:"outgoing",level:3},{value:"Global Metadata Model",id:"global-metadata-model",level:2}],p={toc:m},u="wrapper";function h(e){var{components:n}=e,t=r(e,["components"]);return(0,a.yg)(u,i(function(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{},a=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(a=a.concat(Object.getOwnPropertySymbols(t).filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})))),a.forEach((function(n){o(e,n,t[n])}))}return e}({},p,t),{components:n,mdxType:"MDXLayout"}),(0,a.yg)("h1",{id:"ermodelrelationship"},"ErModelRelationship"),(0,a.yg)("p",null,"ER Model Relationship of Dataset Fields"),(0,a.yg)("h2",{id:"aspects"},"Aspects"),(0,a.yg)("h3",{id:"ermodelrelationshipproperties"},"erModelRelationshipProperties"),(0,a.yg)("p",null,"Properties associated with a ERModelRelationship"),(0,a.yg)("details",null,(0,a.yg)("summary",null,"Schema"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-javascript"},'{\n "type": "record",\n "Aspect": {\n "name": "erModelRelationshipProperties"\n },\n "name": "ERModelRelationshipProperties",\n "namespace": "com.linkedin.ermodelrelation",\n "fields": [\n {\n "Searchable": {\n "/*": {\n "fieldType": "TEXT",\n "queryByDefault": true\n }\n },\n "type": {\n "type": "map",\n "values": "string"\n },\n "name": "customProperties",\n "default": {},\n "doc": "Custom property bag."\n },\n {\n "Searchable": {\n "boostScore": 10.0,\n "enableAutocomplete": true,\n "fieldType": "TEXT_PARTIAL"\n },\n "type": "string",\n "name": "name",\n "doc": "Name of the ERModelRelation"\n },\n {\n "Relationship": {\n "entityTypes": [\n "dataset"\n ],\n "name": "ermodelrelationA"\n },\n "Searchable": {\n "boostScore": 10.0,\n "enableAutocomplete": true,\n "fieldType": "TEXT_PARTIAL"\n },\n "java": {\n "class": "com.linkedin.common.urn.Urn"\n },\n "type": "string",\n "name": "source",\n "doc": "First dataset in the erModelRelationship (no directionality)"\n },\n {\n "Relationship": {\n "entityTypes": [\n "dataset"\n ],\n "name": "ermodelrelationB"\n },\n "Searchable": {\n "boostScore": 10.0,\n "enableAutocomplete": true,\n "fieldType": "TEXT_PARTIAL"\n },\n "java": {\n "class": "com.linkedin.common.urn.Urn"\n },\n "type": "string",\n "name": "destination",\n "doc": "Second dataset in the erModelRelationship (no directionality)"\n },\n {\n "type": {\n "type": "array",\n "items": {\n "type": "record",\n "name": "RelationshipFieldMapping",\n "namespace": "com.linkedin.ermodelrelation",\n "fields": [\n {\n "type": "string",\n "name": "sourceField",\n "doc": "All fields from dataset A that are required for the join, maps to bFields 1:1"\n },\n {\n "type": "string",\n "name": "destinationField",\n "doc": "All fields from dataset B that are required for the join, maps to aFields 1:1"\n }\n ],\n "doc": "Individual Field Mapping of a relationship- one of several"\n }\n },\n "name": "relationshipFieldMappings",\n "doc": "ERModelRelationFieldMapping (in future we can make it an array)"\n },\n {\n "Searchable": {\n "/time": {\n "fieldName": "createdAt",\n "fieldType": "DATETIME"\n }\n },\n "type": [\n "null",\n {\n "type": "record",\n "name": "AuditStamp",\n "namespace": "com.linkedin.common",\n "fields": [\n {\n "type": "long",\n "name": "time",\n "doc": "When did the resource/association/sub-resource move into the specific lifecycle stage represented by this AuditEvent."\n },\n {\n "java": {\n "class": "com.linkedin.common.urn.Urn"\n },\n "type": "string",\n "name": "actor",\n "doc": "The entity (e.g. a member URN) which will be credited for moving the resource/association/sub-resource into the specific lifecycle stage. It is also the one used to authorize the change."\n },\n {\n "java": {\n "class": "com.linkedin.common.urn.Urn"\n },\n "type": [\n "null",\n "string"\n ],\n "name": "impersonator",\n "default": null,\n "doc": "The entity (e.g. a service URN) which performs the change on behalf of the Actor and must be authorized to act as the Actor."\n },\n {\n "type": [\n "null",\n "string"\n ],\n "name": "message",\n "default": null,\n "doc": "Additional context around how DataHub was informed of the particular change. For example: was the change created by an automated process, or manually."\n }\n ],\n "doc": "Data captured on a resource/association/sub-resource level giving insight into when that resource/association/sub-resource moved into a particular lifecycle stage, and who acted to move it into that specific lifecycle stage."\n }\n ],\n "name": "created",\n "default": null,\n "doc": "A timestamp documenting when the asset was created in the source Data Platform (not on DataHub)"\n },\n {\n "Searchable": {\n "/time": {\n "fieldName": "lastModifiedAt",\n "fieldType": "DATETIME"\n }\n },\n "type": [\n "null",\n "com.linkedin.common.AuditStamp"\n ],\n "name": "lastModified",\n "default": null,\n "doc": "A timestamp documenting when the asset was last modified in the source Data Platform (not on DataHub)"\n },\n {\n "type": {\n "type": "enum",\n "name": "ERModelRelationshipCardinality",\n "namespace": "com.linkedin.ermodelrelation",\n "symbols": [\n "ONE_ONE",\n "ONE_N",\n "N_ONE",\n "N_N"\n ]\n },\n "name": "cardinality",\n "default": "N_N",\n "doc": "Cardinality of the relationship"\n }\n ],\n "doc": "Properties associated with a ERModelRelationship"\n}\n'))),(0,a.yg)("h3",{id:"editableermodelrelationshipproperties"},"editableERModelRelationshipProperties"),(0,a.yg)("p",null,"EditableERModelRelationProperties stores editable changes made to erModelRelationship properties. This separates changes made from\ningestion pipelines and edits in the UI to avoid accidental overwrites of user-provided data by ingestion pipelines"),(0,a.yg)("details",null,(0,a.yg)("summary",null,"Schema"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-javascript"},'{\n "type": "record",\n "Aspect": {\n "name": "editableERModelRelationshipProperties"\n },\n "name": "EditableERModelRelationshipProperties",\n "namespace": "com.linkedin.ermodelrelation",\n "fields": [\n {\n "type": {\n "type": "record",\n "name": "AuditStamp",\n "namespace": "com.linkedin.common",\n "fields": [\n {\n "type": "long",\n "name": "time",\n "doc": "When did the resource/association/sub-resource move into the specific lifecycle stage represented by this AuditEvent."\n },\n {\n "java": {\n "class": "com.linkedin.common.urn.Urn"\n },\n "type": "string",\n "name": "actor",\n "doc": "The entity (e.g. a member URN) which will be credited for moving the resource/association/sub-resource into the specific lifecycle stage. It is also the one used to authorize the change."\n },\n {\n "java": {\n "class": "com.linkedin.common.urn.Urn"\n },\n "type": [\n "null",\n "string"\n ],\n "name": "impersonator",\n "default": null,\n "doc": "The entity (e.g. a service URN) which performs the change on behalf of the Actor and must be authorized to act as the Actor."\n },\n {\n "type": [\n "null",\n "string"\n ],\n "name": "message",\n "default": null,\n "doc": "Additional context around how DataHub was informed of the particular change. For example: was the change created by an automated process, or manually."\n }\n ],\n "doc": "Data captured on a resource/association/sub-resource level giving insight into when that resource/association/sub-resource moved into a particular lifecycle stage, and who acted to move it into that specific lifecycle stage."\n },\n "name": "created",\n "default": {\n "actor": "urn:li:corpuser:unknown",\n "impersonator": null,\n "time": 0,\n "message": null\n },\n "doc": "An AuditStamp corresponding to the creation of this resource/association/sub-resource. A value of 0 for time indicates missing data."\n },\n {\n "type": "com.linkedin.common.AuditStamp",\n "name": "lastModified",\n "default": {\n "actor": "urn:li:corpuser:unknown",\n "impersonator": null,\n "time": 0,\n "message": null\n },\n "doc": "An AuditStamp corresponding to the last modification of this resource/association/sub-resource. If no modification has happened since creation, lastModified should be the same as created. A value of 0 for time indicates missing data."\n },\n {\n "type": [\n "null",\n "com.linkedin.common.AuditStamp"\n ],\n "name": "deleted",\n "default": null,\n "doc": "An AuditStamp corresponding to the deletion of this resource/association/sub-resource. Logically, deleted MUST have a later timestamp than creation. It may or may not have the same time as lastModified depending upon the resource/association/sub-resource semantics."\n },\n {\n "Searchable": {\n "fieldName": "editedDescription",\n "fieldType": "TEXT"\n },\n "type": [\n "null",\n "string"\n ],\n "name": "description",\n "default": null,\n "doc": "Documentation of the erModelRelationship"\n },\n {\n "Searchable": {\n "fieldName": "editedName",\n "fieldType": "TEXT_PARTIAL"\n },\n "type": [\n "null",\n "string"\n ],\n "name": "name",\n "default": null,\n "doc": "Display name of the ERModelRelation"\n }\n ],\n "doc": "EditableERModelRelationProperties stores editable changes made to erModelRelationship properties. This separates changes made from\\ningestion pipelines and edits in the UI to avoid accidental overwrites of user-provided data by ingestion pipelines"\n}\n'))),(0,a.yg)("h3",{id:"institutionalmemory"},"institutionalMemory"),(0,a.yg)("p",null,"Institutional memory of an entity. This is a way to link to relevant documentation and provide description of the documentation. Institutional or tribal knowledge is very important for users to leverage the entity."),(0,a.yg)("details",null,(0,a.yg)("summary",null,"Schema"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-javascript"},'{\n "type": "record",\n "Aspect": {\n "name": "institutionalMemory"\n },\n "name": "InstitutionalMemory",\n "namespace": "com.linkedin.common",\n "fields": [\n {\n "type": {\n "type": "array",\n "items": {\n "type": "record",\n "name": "InstitutionalMemoryMetadata",\n "namespace": "com.linkedin.common",\n "fields": [\n {\n "java": {\n "class": "com.linkedin.common.url.Url",\n "coercerClass": "com.linkedin.common.url.UrlCoercer"\n },\n "type": "string",\n "name": "url",\n "doc": "Link to an engineering design document or a wiki page."\n },\n {\n "type": "string",\n "name": "description",\n "doc": "Description of the link."\n },\n {\n "type": {\n "type": "record",\n "name": "AuditStamp",\n "namespace": "com.linkedin.common",\n "fields": [\n {\n "type": "long",\n "name": "time",\n "doc": "When did the resource/association/sub-resource move into the specific lifecycle stage represented by this AuditEvent."\n },\n {\n "java": {\n "class": "com.linkedin.common.urn.Urn"\n },\n "type": "string",\n "name": "actor",\n "doc": "The entity (e.g. a member URN) which will be credited for moving the resource/association/sub-resource into the specific lifecycle stage. It is also the one used to authorize the change."\n },\n {\n "java": {\n "class": "com.linkedin.common.urn.Urn"\n },\n "type": [\n "null",\n "string"\n ],\n "name": "impersonator",\n "default": null,\n "doc": "The entity (e.g. a service URN) which performs the change on behalf of the Actor and must be authorized to act as the Actor."\n },\n {\n "type": [\n "null",\n "string"\n ],\n "name": "message",\n "default": null,\n "doc": "Additional context around how DataHub was informed of the particular change. For example: was the change created by an automated process, or manually."\n }\n ],\n "doc": "Data captured on a resource/association/sub-resource level giving insight into when that resource/association/sub-resource moved into a particular lifecycle stage, and who acted to move it into that specific lifecycle stage."\n },\n "name": "createStamp",\n "doc": "Audit stamp associated with creation of this record"\n }\n ],\n "doc": "Metadata corresponding to a record of institutional memory."\n }\n },\n "name": "elements",\n "doc": "List of records that represent institutional memory of an entity. Each record consists of a link, description, creator and timestamps associated with that record."\n }\n ],\n "doc": "Institutional memory of an entity. This is a way to link to relevant documentation and provide description of the documentation. Institutional or tribal knowledge is very important for users to leverage the entity."\n}\n'))),(0,a.yg)("h3",{id:"ownership"},"ownership"),(0,a.yg)("p",null,"Ownership information of an entity."),(0,a.yg)("details",null,(0,a.yg)("summary",null,"Schema"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-javascript"},'{\n "type": "record",\n "Aspect": {\n "name": "ownership"\n },\n "name": "Ownership",\n "namespace": "com.linkedin.common",\n "fields": [\n {\n "type": {\n "type": "array",\n "items": {\n "type": "record",\n "name": "Owner",\n "namespace": "com.linkedin.common",\n "fields": [\n {\n "Relationship": {\n "entityTypes": [\n "corpuser",\n "corpGroup"\n ],\n "name": "OwnedBy"\n },\n "Searchable": {\n "addToFilters": true,\n "fieldName": "owners",\n "fieldType": "URN",\n "filterNameOverride": "Owned By",\n "hasValuesFieldName": "hasOwners",\n "queryByDefault": false\n },\n "java": {\n "class": "com.linkedin.common.urn.Urn"\n },\n "type": "string",\n "name": "owner",\n "doc": "Owner URN, e.g. urn:li:corpuser:ldap, urn:li:corpGroup:group_name, and urn:li:multiProduct:mp_name\\n(Caveat: only corpuser is currently supported in the frontend.)"\n },\n {\n "deprecated": true,\n "type": {\n "type": "enum",\n "symbolDocs": {\n "BUSINESS_OWNER": "A person or group who is responsible for logical, or business related, aspects of the asset.",\n "CONSUMER": "A person, group, or service that consumes the data\\nDeprecated! Use TECHNICAL_OWNER or BUSINESS_OWNER instead.",\n "CUSTOM": "Set when ownership type is unknown or a when new one is specified as an ownership type entity for which we have no\\nenum value for. This is used for backwards compatibility",\n "DATAOWNER": "A person or group that is owning the data\\nDeprecated! Use TECHNICAL_OWNER instead.",\n "DATA_STEWARD": "A steward, expert, or delegate responsible for the asset.",\n "DELEGATE": "A person or a group that overseas the operation, e.g. a DBA or SRE.\\nDeprecated! Use TECHNICAL_OWNER instead.",\n "DEVELOPER": "A person or group that is in charge of developing the code\\nDeprecated! Use TECHNICAL_OWNER instead.",\n "NONE": "No specific type associated to the owner.",\n "PRODUCER": "A person, group, or service that produces/generates the data\\nDeprecated! Use TECHNICAL_OWNER instead.",\n "STAKEHOLDER": "A person or a group that has direct business interest\\nDeprecated! Use TECHNICAL_OWNER, BUSINESS_OWNER, or STEWARD instead.",\n "TECHNICAL_OWNER": "person or group who is responsible for technical aspects of the asset."\n },\n "deprecatedSymbols": {\n "CONSUMER": true,\n "DATAOWNER": true,\n "DELEGATE": true,\n "DEVELOPER": true,\n "PRODUCER": true,\n "STAKEHOLDER": true\n },\n "name": "OwnershipType",\n "namespace": "com.linkedin.common",\n "symbols": [\n "CUSTOM",\n "TECHNICAL_OWNER",\n "BUSINESS_OWNER",\n "DATA_STEWARD",\n "NONE",\n "DEVELOPER",\n "DATAOWNER",\n "DELEGATE",\n "PRODUCER",\n "CONSUMER",\n "STAKEHOLDER"\n ],\n "doc": "Asset owner types"\n },\n "name": "type",\n "doc": "The type of the ownership"\n },\n {\n "Relationship": {\n "entityTypes": [\n "ownershipType"\n ],\n "name": "ownershipType"\n },\n "java": {\n "class": "com.linkedin.common.urn.Urn"\n },\n "type": [\n "null",\n "string"\n ],\n "name": "typeUrn",\n "default": null,\n "doc": "The type of the ownership\\nUrn of type O"\n },\n {\n "type": [\n "null",\n {\n "type": "record",\n "name": "OwnershipSource",\n "namespace": "com.linkedin.common",\n "fields": [\n {\n "type": {\n "type": "enum",\n "symbolDocs": {\n "AUDIT": "Auditing system or audit logs",\n "DATABASE": "Database, e.g. GRANTS table",\n "FILE_SYSTEM": "File system, e.g. file/directory owner",\n "ISSUE_TRACKING_SYSTEM": "Issue tracking system, e.g. Jira",\n "MANUAL": "Manually provided by a user",\n "OTHER": "Other sources",\n "SERVICE": "Other ownership-like service, e.g. Nuage, ACL service etc",\n "SOURCE_CONTROL": "SCM system, e.g. GIT, SVN"\n },\n "name": "OwnershipSourceType",\n "namespace": "com.linkedin.common",\n "symbols": [\n "AUDIT",\n "DATABASE",\n "FILE_SYSTEM",\n "ISSUE_TRACKING_SYSTEM",\n "MANUAL",\n "SERVICE",\n "SOURCE_CONTROL",\n "OTHER"\n ]\n },\n "name": "type",\n "doc": "The type of the source"\n },\n {\n "type": [\n "null",\n "string"\n ],\n "name": "url",\n "default": null,\n "doc": "A reference URL for the source"\n }\n ],\n "doc": "Source/provider of the ownership information"\n }\n ],\n "name": "source",\n "default": null,\n "doc": "Source information for the ownership"\n }\n ],\n "doc": "Ownership information"\n }\n },\n "name": "owners",\n "doc": "List of owners of the entity."\n },\n {\n "Searchable": {\n "/*": {\n "fieldType": "MAP_ARRAY",\n "queryByDefault": false\n }\n },\n "type": [\n {\n "type": "map",\n "values": {\n "type": "array",\n "items": "string"\n }\n },\n "null"\n ],\n "name": "ownerTypes",\n "default": {},\n "doc": "Ownership type to Owners map, populated via mutation hook."\n },\n {\n "type": {\n "type": "record",\n "name": "AuditStamp",\n "namespace": "com.linkedin.common",\n "fields": [\n {\n "type": "long",\n "name": "time",\n "doc": "When did the resource/association/sub-resource move into the specific lifecycle stage represented by this AuditEvent."\n },\n {\n "java": {\n "class": "com.linkedin.common.urn.Urn"\n },\n "type": "string",\n "name": "actor",\n "doc": "The entity (e.g. a member URN) which will be credited for moving the resource/association/sub-resource into the specific lifecycle stage. It is also the one used to authorize the change."\n },\n {\n "java": {\n "class": "com.linkedin.common.urn.Urn"\n },\n "type": [\n "null",\n "string"\n ],\n "name": "impersonator",\n "default": null,\n "doc": "The entity (e.g. a service URN) which performs the change on behalf of the Actor and must be authorized to act as the Actor."\n },\n {\n "type": [\n "null",\n "string"\n ],\n "name": "message",\n "default": null,\n "doc": "Additional context around how DataHub was informed of the particular change. For example: was the change created by an automated process, or manually."\n }\n ],\n "doc": "Data captured on a resource/association/sub-resource level giving insight into when that resource/association/sub-resource moved into a particular lifecycle stage, and who acted to move it into that specific lifecycle stage."\n },\n "name": "lastModified",\n "default": {\n "actor": "urn:li:corpuser:unknown",\n "impersonator": null,\n "time": 0,\n "message": null\n },\n "doc": "Audit stamp containing who last modified the record and when. A value of 0 in the time field indicates missing data."\n }\n ],\n "doc": "Ownership information of an entity."\n}\n'))),(0,a.yg)("h3",{id:"status"},"status"),(0,a.yg)("p",null,"The lifecycle status metadata of an entity, e.g. dataset, metric, feature, etc.\nThis aspect is used to represent soft deletes conventionally."),(0,a.yg)("details",null,(0,a.yg)("summary",null,"Schema"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-javascript"},'{\n "type": "record",\n "Aspect": {\n "name": "status"\n },\n "name": "Status",\n "namespace": "com.linkedin.common",\n "fields": [\n {\n "Searchable": {\n "fieldType": "BOOLEAN"\n },\n "type": "boolean",\n "name": "removed",\n "default": false,\n "doc": "Whether the entity has been removed (soft-deleted)."\n }\n ],\n "doc": "The lifecycle status metadata of an entity, e.g. dataset, metric, feature, etc.\\nThis aspect is used to represent soft deletes conventionally."\n}\n'))),(0,a.yg)("h3",{id:"globaltags"},"globalTags"),(0,a.yg)("p",null,"Tag aspect used for applying tags to an entity"),(0,a.yg)("details",null,(0,a.yg)("summary",null,"Schema"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-javascript"},'{\n "type": "record",\n "Aspect": {\n "name": "globalTags"\n },\n "name": "GlobalTags",\n "namespace": "com.linkedin.common",\n "fields": [\n {\n "Relationship": {\n "/*/tag": {\n "entityTypes": [\n "tag"\n ],\n "name": "TaggedWith"\n }\n },\n "Searchable": {\n "/*/tag": {\n "addToFilters": true,\n "boostScore": 0.5,\n "fieldName": "tags",\n "fieldType": "URN",\n "filterNameOverride": "Tag",\n "hasValuesFieldName": "hasTags",\n "queryByDefault": true\n }\n },\n "type": {\n "type": "array",\n "items": {\n "type": "record",\n "name": "TagAssociation",\n "namespace": "com.linkedin.common",\n "fields": [\n {\n "java": {\n "class": "com.linkedin.common.urn.TagUrn"\n },\n "type": "string",\n "name": "tag",\n "doc": "Urn of the applied tag"\n },\n {\n "type": [\n "null",\n "string"\n ],\n "name": "context",\n "default": null,\n "doc": "Additional context about the association"\n },\n {\n "Searchable": {\n "/actor": {\n "fieldName": "tagAttributionActors",\n "fieldType": "URN",\n "queryByDefault": false\n },\n "/source": {\n "fieldName": "tagAttributionSources",\n "fieldType": "URN",\n "queryByDefault": false\n },\n "/time": {\n "fieldName": "tagAttributionDates",\n "fieldType": "DATETIME",\n "queryByDefault": false\n }\n },\n "type": [\n "null",\n {\n "type": "record",\n "name": "MetadataAttribution",\n "namespace": "com.linkedin.common",\n "fields": [\n {\n "type": "long",\n "name": "time",\n "doc": "When this metadata was updated."\n },\n {\n "java": {\n "class": "com.linkedin.common.urn.Urn"\n },\n "type": "string",\n "name": "actor",\n "doc": "The entity (e.g. a member URN) responsible for applying the assocated metadata. This can\\neither be a user (in case of UI edits) or the datahub system for automation."\n },\n {\n "java": {\n "class": "com.linkedin.common.urn.Urn"\n },\n "type": [\n "null",\n "string"\n ],\n "name": "source",\n "default": null,\n "doc": "The DataHub source responsible for applying the associated metadata. This will only be filled out\\nwhen a DataHub source is responsible. This includes the specific metadata test urn, the automation urn."\n },\n {\n "type": {\n "type": "map",\n "values": "string"\n },\n "name": "sourceDetail",\n "default": {},\n "doc": "The details associated with why this metadata was applied. For example, this could include\\nthe actual regex rule, sql statement, ingestion pipeline ID, etc."\n }\n ],\n "doc": "Information about who, why, and how this metadata was applied"\n }\n ],\n "name": "attribution",\n "default": null,\n "doc": "Information about who, why, and how this metadata was applied"\n }\n ],\n "doc": "Properties of an applied tag. For now, just an Urn. In the future we can extend this with other properties, e.g.\\npropagation parameters."\n }\n },\n "name": "tags",\n "doc": "Tags associated with a given entity"\n }\n ],\n "doc": "Tag aspect used for applying tags to an entity"\n}\n'))),(0,a.yg)("h3",{id:"glossaryterms"},"glossaryTerms"),(0,a.yg)("p",null,"Related business terms information"),(0,a.yg)("details",null,(0,a.yg)("summary",null,"Schema"),(0,a.yg)("pre",null,(0,a.yg)("code",{parentName:"pre",className:"language-javascript"},'{\n "type": "record",\n "Aspect": {\n "name": "glossaryTerms"\n },\n "name": "GlossaryTerms",\n "namespace": "com.linkedin.common",\n "fields": [\n {\n "type": {\n "type": "array",\n "items": {\n "type": "record",\n "name": "GlossaryTermAssociation",\n "namespace": "com.linkedin.common",\n "fields": [\n {\n "Relationship": {\n "entityTypes": [\n "glossaryTerm"\n ],\n "name": "TermedWith"\n },\n "Searchable": {\n "addToFilters": true,\n "fieldName": "glossaryTerms",\n "fieldType": "URN",\n "filterNameOverride": "Glossary Term",\n "hasValuesFieldName": "hasGlossaryTerms",\n "includeSystemModifiedAt": true,\n "systemModifiedAtFieldName": "termsModifiedAt"\n },\n "java": {\n "class": "com.linkedin.common.urn.GlossaryTermUrn"\n },\n "type": "string",\n "name": "urn",\n "doc": "Urn of the applied glossary term"\n },\n {\n "java": {\n "class": "com.linkedin.common.urn.Urn"\n },\n "type": [\n "null",\n "string"\n ],\n "name": "actor",\n "default": null,\n "doc": "The user URN which will be credited for adding associating this term to the entity"\n },\n {\n "type": [\n "null",\n "string"\n ],\n "name": "context",\n "default": null,\n "doc": "Additional context about the association"\n },\n {\n "Searchable": {\n "/actor": {\n "fieldName": "termAttributionActors",\n "fieldType": "URN",\n "queryByDefault": false\n },\n "/source": {\n "fieldName": "termAttributionSources",\n "fieldType": "URN",\n "queryByDefault": false\n },\n "/time": {\n "fieldName": "termAttributionDates",\n "fieldType": "DATETIME",\n "queryByDefault": false\n }\n },\n "type": [\n "null",\n {\n "type": "record",\n "name": "MetadataAttribution",\n "namespace": "com.linkedin.common",\n "fields": [\n {\n "type": "long",\n "name": "time",\n "doc": "When this metadata was updated."\n },\n {\n "java": {\n "class": "com.linkedin.common.urn.Urn"\n },\n "type": "string",\n "name": "actor",\n "doc": "The entity (e.g. a member URN) responsible for applying the assocated metadata. This can\\neither be a user (in case of UI edits) or the datahub system for automation."\n },\n {\n "java": {\n "class": "com.linkedin.common.urn.Urn"\n },\n "type": [\n "null",\n "string"\n ],\n "name": "source",\n "default": null,\n "doc": "The DataHub source responsible for applying the associated metadata. This will only be filled out\\nwhen a DataHub source is responsible. This includes the specific metadata test urn, the automation urn."\n },\n {\n "type": {\n "type": "map",\n "values": "string"\n },\n "name": "sourceDetail",\n "default": {},\n "doc": "The details associated with why this metadata was applied. For example, this could include\\nthe actual regex rule, sql statement, ingestion pipeline ID, etc."\n }\n ],\n "doc": "Information about who, why, and how this metadata was applied"\n }\n ],\n "name": "attribution",\n "default": null,\n "doc": "Information about who, why, and how this metadata was applied"\n }\n ],\n "doc": "Properties of an applied glossary term."\n }\n },\n "name": "terms",\n "doc": "The related business terms"\n },\n {\n "type": {\n "type": "record",\n "name": "AuditStamp",\n "namespace": "com.linkedin.common",\n "fields": [\n {\n "type": "long",\n "name": "time",\n "doc": "When did the resource/association/sub-resource move into the specific lifecycle stage represented by this AuditEvent."\n },\n {\n "java": {\n "class": "com.linkedin.common.urn.Urn"\n },\n "type": "string",\n "name": "actor",\n "doc": "The entity (e.g. a member URN) which will be credited for moving the resource/association/sub-resource into the specific lifecycle stage. It is also the one used to authorize the change."\n },\n {\n "java": {\n "class": "com.linkedin.common.urn.Urn"\n },\n "type": [\n "null",\n "string"\n ],\n "name": "impersonator",\n "default": null,\n "doc": "The entity (e.g. a service URN) which performs the change on behalf of the Actor and must be authorized to act as the Actor."\n },\n {\n "type": [\n "null",\n "string"\n ],\n "name": "message",\n "default": null,\n "doc": "Additional context around how DataHub was informed of the particular change. For example: was the change created by an automated process, or manually."\n }\n ],\n "doc": "Data captured on a resource/association/sub-resource level giving insight into when that resource/association/sub-resource moved into a particular lifecycle stage, and who acted to move it into that specific lifecycle stage."\n },\n "name": "auditStamp",\n "doc": "Audit stamp containing who reported the related business term"\n }\n ],\n "doc": "Related business terms information"\n}\n'))),(0,a.yg)("h2",{id:"relationships"},"Relationships"),(0,a.yg)("h3",{id:"outgoing"},"Outgoing"),(0,a.yg)("p",null,"These are the relationships stored in this entity's aspects"),(0,a.yg)("ul",null,(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("p",{parentName:"li"},"ermodelrelationA"),(0,a.yg)("ul",{parentName:"li"},(0,a.yg)("li",{parentName:"ul"},"Dataset via ",(0,a.yg)("inlineCode",{parentName:"li"},"erModelRelationshipProperties.source")))),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("p",{parentName:"li"},"ermodelrelationB"),(0,a.yg)("ul",{parentName:"li"},(0,a.yg)("li",{parentName:"ul"},"Dataset via ",(0,a.yg)("inlineCode",{parentName:"li"},"erModelRelationshipProperties.destination")))),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("p",{parentName:"li"},"OwnedBy"),(0,a.yg)("ul",{parentName:"li"},(0,a.yg)("li",{parentName:"ul"},"Corpuser via ",(0,a.yg)("inlineCode",{parentName:"li"},"ownership.owners.owner")),(0,a.yg)("li",{parentName:"ul"},"CorpGroup via ",(0,a.yg)("inlineCode",{parentName:"li"},"ownership.owners.owner")))),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("p",{parentName:"li"},"ownershipType"),(0,a.yg)("ul",{parentName:"li"},(0,a.yg)("li",{parentName:"ul"},"OwnershipType via ",(0,a.yg)("inlineCode",{parentName:"li"},"ownership.owners.typeUrn")))),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("p",{parentName:"li"},"TaggedWith"),(0,a.yg)("ul",{parentName:"li"},(0,a.yg)("li",{parentName:"ul"},"Tag via ",(0,a.yg)("inlineCode",{parentName:"li"},"globalTags.tags")))),(0,a.yg)("li",{parentName:"ul"},(0,a.yg)("p",{parentName:"li"},"TermedWith"),(0,a.yg)("ul",{parentName:"li"},(0,a.yg)("li",{parentName:"ul"},"GlossaryTerm via ",(0,a.yg)("inlineCode",{parentName:"li"},"glossaryTerms.terms.urn"))))),(0,a.yg)("h2",{id:"global-metadata-model"},(0,a.yg)("a",{parentName:"h2",href:"https://github.com/datahub-project/static-assets/raw/main/imgs/datahub-metadata-model.png"},"Global Metadata Model")),(0,a.yg)("p",null,(0,a.yg)("img",{parentName:"p",src:"https://github.com/datahub-project/static-assets/raw/main/imgs/datahub-metadata-model.png",alt:"Global Graph"})))}h.isMDXComponent=!0}}]);