Skip to content

Commit 3b92f67

Browse files
Backport 11671 to 1.9.latest (#11684)
Co-authored-by: Michelle Ark <[email protected]>
1 parent ecae0a6 commit 3b92f67

File tree

14 files changed

+626
-18
lines changed

14 files changed

+626
-18
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
kind: Features
2+
body: Support config on columns
3+
time: 2025-05-26T11:22:59.767909-04:00
4+
custom:
5+
Author: michelleark
6+
Issue: "11651"

core/dbt/artifacts/resources/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
# alias to latest resource definitions
55
from dbt.artifacts.resources.v1.components import (
6+
ColumnConfig,
67
ColumnInfo,
78
CompiledResource,
89
Contract,

core/dbt/artifacts/resources/v1/components.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from dbt.artifacts.resources.base import Docs, FileHash, GraphResource
77
from dbt.artifacts.resources.types import NodeType, TimePeriod
88
from dbt.artifacts.resources.v1.config import NodeConfig
9+
from dbt_common.contracts.config.base import BaseConfig, MergeBehavior
910
from dbt_common.contracts.config.properties import AdditionalPropertiesMixin
1011
from dbt_common.contracts.constraints import ColumnLevelConstraint
1112
from dbt_common.contracts.util import Mergeable
@@ -55,6 +56,12 @@ def keyword_args(self) -> Dict[str, Optional[NodeVersion]]:
5556
return {}
5657

5758

59+
@dataclass
60+
class ColumnConfig(BaseConfig):
61+
meta: Dict[str, Any] = field(default_factory=dict, metadata=MergeBehavior.Update.meta())
62+
tags: List[str] = field(default_factory=list)
63+
64+
5865
@dataclass
5966
class ColumnInfo(AdditionalPropertiesMixin, ExtensibleDbtClassMixin):
6067
"""Used in all ManifestNodes and SourceDefinition"""
@@ -65,6 +72,7 @@ class ColumnInfo(AdditionalPropertiesMixin, ExtensibleDbtClassMixin):
6572
data_type: Optional[str] = None
6673
constraints: List[ColumnLevelConstraint] = field(default_factory=list)
6774
quote: Optional[bool] = None
75+
config: ColumnConfig = field(default_factory=ColumnConfig)
6876
tags: List[str] = field(default_factory=list)
6977
_extra: Dict[str, Any] = field(default_factory=dict)
7078
granularity: Optional[TimeGranularity] = None

core/dbt/contracts/graph/unparsed.py

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ class HasColumnProps(AdditionalPropertiesMixin, ExtensibleDbtClassMixin):
9999
data_type: Optional[str] = None
100100
constraints: List[Dict[str, Any]] = field(default_factory=list)
101101
docs: Docs = field(default_factory=Docs)
102+
config: Dict[str, Any] = field(default_factory=dict)
102103
_extra: Dict[str, Any] = field(default_factory=dict)
103104

104105

@@ -113,23 +114,11 @@ class HasColumnAndTestProps(HasColumnProps):
113114
) # back compat for previous name of 'data_tests'
114115

115116

116-
@dataclass
117-
class UnparsedColumn(HasColumnAndTestProps):
118-
quote: Optional[bool] = None
119-
tags: List[str] = field(default_factory=list)
120-
granularity: Optional[str] = None # str is really a TimeGranularity Enum
121-
122-
123117
@dataclass
124118
class HasColumnDocs(dbtClassMixin):
125119
columns: Sequence[HasColumnProps] = field(default_factory=list)
126120

127121

128-
@dataclass
129-
class HasColumnTests(dbtClassMixin):
130-
columns: Sequence[UnparsedColumn] = field(default_factory=list)
131-
132-
133122
@dataclass
134123
class HasYamlMetadata(dbtClassMixin):
135124
original_file_path: str
@@ -146,6 +135,18 @@ class HasConfig:
146135
config: Dict[str, Any] = field(default_factory=dict)
147136

148137

138+
@dataclass
139+
class UnparsedColumn(HasConfig, HasColumnAndTestProps):
140+
quote: Optional[bool] = None
141+
tags: List[str] = field(default_factory=list)
142+
granularity: Optional[str] = None # str is really a TimeGranularity Enum
143+
144+
145+
@dataclass
146+
class HasColumnTests(dbtClassMixin):
147+
columns: Sequence[UnparsedColumn] = field(default_factory=list)
148+
149+
149150
@dataclass
150151
class UnparsedVersion(dbtClassMixin):
151152
v: NodeVersion

core/dbt/parser/common.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from dataclasses import dataclass
22
from typing import Any, Dict, Generic, List, Optional, TypeVar, Union
33

4-
from dbt.artifacts.resources import ColumnInfo, NodeVersion
4+
from dbt.artifacts.resources import ColumnConfig, ColumnInfo, NodeVersion
55
from dbt.contracts.graph.nodes import UnpatchedSourceDefinition
66
from dbt.contracts.graph.unparsed import (
77
HasColumnDocs,
@@ -232,6 +232,9 @@ def _add(self, column: HasColumnProps) -> None:
232232
quote=quote,
233233
_extra=column.extra,
234234
granularity=granularity,
235+
config=ColumnConfig(
236+
meta=column.config.get("meta", {}), tags=column.config.get("tags", [])
237+
),
235238
)
236239

237240
@classmethod

0 commit comments

Comments
 (0)