Source

@AggregateRoot(lifecycle = [], ownership = Ownership.TENANT)
@Description(value = "A data source of the warehouse: a Wow table or an analyst's table, its scope and its sensitivity")
class Source(state: SourceState)

One data source of the catalog: a table or view of the warehouse, its id AnalyticsCatalogContext.sourceIdOf of (connection, database, table), so each physical table is one source.

  • An analyst's table ((b)): DraftSource reads its columns from the warehouse; ReviseSource declares its tenant column (required), owner and space columns, and the columns that refer to an aggregate the catalog knows; ReviewSourceSensitivity records each string column's protection; MarkSourceReviewed completes the review (draft → reviewed). Revising a reviewed source, or its table changing under it, takes it back to its draft.

  • A Wow table (②③): SyncSource adopts the table's wow_catalog row that the trust rules accept (CatalogTrust): the scope, references and sensitivity the Sink wrote, never lower than the source gave before; a lowered or vanished protection is kept and pending until ApproveSensitivityChange. An analyst may only tighten it (ReviewSourceSensitivity); a table that has a trusted row is not an analyst's to draft, and an analyst's source of a table that gets one becomes a Wow source. Refusals, adoptions and losses are events: the audit.

Every source is in the platform's tenant (AnalyticsCatalogContext.TENANT_ID, the type's fixed tenant), a resource of that tenant (Ownership.TENANT); who may send what is the service's authorizer's to say.

Constructors

Link copied to clipboard
constructor(state: SourceState)

Functions

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard