diff --git a/dbt/adapters/redshift/relation_configs/materialized_view.py b/dbt/adapters/redshift/relation_configs/materialized_view.py index e65a7cf1c..a01185f22 100644 --- a/dbt/adapters/redshift/relation_configs/materialized_view.py +++ b/dbt/adapters/redshift/relation_configs/materialized_view.py @@ -206,8 +206,8 @@ def parse_relation_results(cls, relation_results: RelationResults) -> Dict: {"dist": RedshiftDistConfig.parse_relation_results(materialized_view)} ) - if columns:= relation_results.get("columns"): - sort_columns = [row for row in columns.rows if row.get("sort_key_position") > 0] + if columns := relation_results.get("columns"): + sort_columns = [row for row in columns.rows if row.get("sort_key_position", 0) > 0] if sort_columns: config_dict.update( {"sort": RedshiftSortConfig.parse_relation_results(sort_columns)} diff --git a/dbt/adapters/redshift/relation_configs/sort.py b/dbt/adapters/redshift/relation_configs/sort.py index 5bdb4c936..f38d5a1e1 100644 --- a/dbt/adapters/redshift/relation_configs/sort.py +++ b/dbt/adapters/redshift/relation_configs/sort.py @@ -137,7 +137,6 @@ def parse_relation_config(cls, relation_config: RelationConfig) -> Dict[str, Any return config_dict - @classmethod def parse_relation_results(cls, relation_results_entry: "agate.MappedSequence") -> dict: """ @@ -161,7 +160,7 @@ def parse_relation_results(cls, relation_results_entry: "agate.MappedSequence") Returns: a standard dictionary describing this `RedshiftSortConfig` instance """ sort_config = [] - + sorted_columns = sorted(relation_results_entry, key=lambda x: x["sort_key_position"]) for column in sorted_columns: if column.get("sort_key_position"): @@ -169,6 +168,7 @@ def parse_relation_results(cls, relation_results_entry: "agate.MappedSequence") return {"sortkey": sort_config} + @dataclass(frozen=True, eq=True, unsafe_hash=True) class RedshiftSortConfigChange(RelationConfigChange, RelationConfigValidationMixin): context: RedshiftSortConfig diff --git a/tests/unit/test_materialized_view.py b/tests/unit/test_materialized_view.py index 13d4341df..322b134f8 100644 --- a/tests/unit/test_materialized_view.py +++ b/tests/unit/test_materialized_view.py @@ -81,6 +81,11 @@ def test_redshift_materialized_view_parse_relation_results_handles_multiples_sor "is_dist_key": True, "sort_key_position": 2, }, + { + "column": "my_column5", + "is_dist_key": False, + "sort_key_position": 0, + }, ], )