What is a snapshot?
A metadata snapshot models the current state of one or multiple metadata aspects associated with a particular entity. Each entity type is expected to have:
- An entity-specific aspect (e.g.
CorpGroupAspect
from below), which is atyperef
containing a union of all possible metadata aspects for the entity. - An entity-specific snapshot (e.g.
CorpGroupSnapshot
from below), which contains an array (aspects) of entity-specific aspects.
namespace com.linkedin.metadata.aspect
import com.linkedin.group.Membership
import com.linkedin.group.SomeOtherMetadata
/**
* A union of all supported metadata aspects for a group
*/
typeref CorpGroupAspect = union[Membership, SomeOtherMetadata]
namespace com.linkedin.metadata.snapshot
import com.linkedin.common.CorpGroupUrn
import com.linkedin.metadata.aspect.CorpGroupAspect
/**
* A metadata snapshot for a specific Group entity.
*/
record CorpGroupSnapshot {
/** URN for the entity the metadata snapshot is associated with */
urn: CorpGroupUrn
/** The list of metadata aspects associated with the group */
aspects: array[CorpGroupAspect]
}
The generic Snapshot
typeref contains a union of all entity-specific snapshots and can therefore be used to represent the state of any metadata aspect for all supported entity types.
namespace com.linkedin.metadata.snapshot
/**
* A union of all supported metadata snapshot types.
*/
typeref Snapshot = union[DatasetSnapshot, CorpGroupSnapshot, CorpUserSnapshot]