Apply these documentation and governance rules to every table, regardless of layer or domain. This skill takes priority and should be applied first, before domain-specific skills like sdp-basics or pii-management.
For a complete CREATE + ALTER TABLE + SET TAGS example, read governance-template.md.
Table-Level Documentation
COMMENT Clause (Required)
Every table MUST have a COMMENT clause. The comment must describe:
- What the table contains
- The data source or upstream table
- Whether the table contains PII (if applicable)
| Layer | Pattern |
|---|---|
| Bronze | COMMENT "Raw <entity> data ingested from <source>" |
| Silver | COMMENT "Cleaned and validated <entity> with derived metrics from bronze_<entity>" |
| Gold | COMMENT "Business aggregation: <metric> by <dimensions>" |
| PII | Append - CONTAINS PII: <column_list> to any table with personal data |
TBLPROPERTIES (Required)
Every table MUST have TBLPROPERTIES with at minimum:
TBLPROPERTIES (
"quality" = "<bronze|silver|gold>",
"domain" = "<business-domain>"
)
Additional required properties by context:
| Condition | Additional Properties |
|---|---|
| Contains PII | "contains_pii" = "true", "pii_columns" = "<column_list>" |
| Silver/Gold layer | "delta.enableChangeDataFeed" = "true" |
| Streaming table | "delta.enableRowTracking" = "true" |
| Subject to retention | "retention_days" = "<number>" |
Column-Level Documentation
After creating a table, add column descriptions for key columns using ALTER TABLE. See governance-template.md for the full statement.
At minimum, add descriptions for:
- Primary keys and foreign keys
- Derived or calculated columns (explain the logic)
- PII columns (note the risk level and any masking applied)
- Data quality flag columns
- Audit columns
- Any column whose meaning is not obvious from its name
| Column Type | Description Pattern |
|---|---|
| Primary key | 'Unique <entity> identifier from <source>' |
| Foreign key | 'References <parent_table>.<parent_column>' |
| Derived numeric | 'Calculated as <formula>. Units: <unit>' |
| Derived category | 'Derived <category> bracket: <value1> / <value2> / ...' |
| Masked PII | '<Masking method> of <original_column> for PII protection' |
| Audit timestamp | 'Pipeline execution timestamp' |
| Source system | 'Upstream source system identifier' |
| DQ flag | 'Row-level data quality status: <possible values>' |
PII Labeling at Table Level
Tables containing personal data require additional governance:
- TBLPROPERTIES must include
"contains_pii" = "true"and"pii_columns"listing all PII column names - COMMENT must include
CONTAINS PII: <column_list> - Column descriptions for PII columns must note the PII type and risk level
- Unity Catalog tags should be applied where supported (see governance-template.md)
Unity Catalog Tags
Use tags for discoverability and governance automation:
| Tag | Values | Purpose |
|---|---|---|
quality |
bronze, silver, gold |
Layer classification |
domain |
finance, hr, marketing, etc. |
Business domain |
pii |
true, false |
PII flag for governance scanning |
data_classification |
public, internal, confidential, restricted |
Access control tier |
sla |
daily, hourly, real-time |
Freshness expectation |
Do not put owner in TBLPROPERTIES (reserved). Do not use an owner UC tag to fake table ownership -- Unity Catalog owner is the pipeline run-as identity.
Governance Checklist
Before completing any table definition, verify ALL of the following:
-
COMMENTclause is present and descriptive -
TBLPROPERTIESincludes at leastquality(anddomainwhere known). Do not setowner. - If PII is present:
contains_piiandpii_columnsare in TBLPROPERTIES - If PII is present: COMMENT mentions
CONTAINS PII - Column descriptions added for primary keys, derived columns, and PII columns
- Unity Catalog tags applied (
quality,domain,pii,data_classification) -
audit_timestampandsource_systemare the last two columns