Skip to content

Commit

Permalink
Merge pull request #170 from dbt-labs/throw-errors-on-invalid-entity-…
Browse files Browse the repository at this point in the history
…names

Throw exceptions on invalid entity names in filter and group by expressions
  • Loading branch information
tlento authored Oct 10, 2023
2 parents 7c3baa3 + fb8e8e9 commit 1af06d7
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 1 deletion.
7 changes: 7 additions & 0 deletions .changes/unreleased/Fixes-20231009-211057.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
kind: Fixes
body: Throw an exception when invalid entity names are encountered in filter/group
by parameters
time: 2023-10-09T21:10:57.456012-07:00
custom:
Author: tlento
Issue: "172"
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,10 @@ def create_entity(entity_name: str, entity_path: Sequence[str] = ()) -> EntityCa
"""Gets called by Jinja when rendering {{ Entity(...) }}."""
group_by_item_name = DunderedNameFormatter.parse_name(entity_name)
if len(group_by_item_name.entity_links) > 0 or group_by_item_name.time_granularity is not None:
ParameterSetFactory._exception_message_for_incorrect_format(entity_name)
raise ParseWhereFilterException(
f"Entity name is in an incorrect format: '{entity_name}'. "
f"It should not contain any dunders (double underscores, or __)."
)

return EntityCallParameterSet(
entity_path=tuple(EntityReference(element_name=arg) for arg in entity_path),
Expand Down
8 changes: 8 additions & 0 deletions tests/implementations/where_filter/test_parse_calls.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,3 +137,11 @@ def test_metric_time_in_dimension_call_error() -> None: # noqa: D
PydanticWhereFilter(where_sql_template="{{ Dimension('metric_time') }} > '2020-01-01'").call_parameter_sets
is not None
)


def test_invalid_entity_name_error() -> None:
"""Test to ensure we throw an error if an entity name is invalid."""
bad_entity_filter = PydanticWhereFilter(where_sql_template="{{ Entity('order_id__is_food_order' )}}")

with pytest.raises(ParseWhereFilterException, match="Entity name is in an incorrect format"):
bad_entity_filter.call_parameter_sets

0 comments on commit 1af06d7

Please sign in to comment.