You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/SPEC-semantic-matching.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -150,7 +150,7 @@ For `A.aggr(B, ...)`, semantic matching applies with an additional constraint.
150
150
151
151
This ensures that each B tuple belongs to exactly one A entity, so aggregation groups are non-overlapping. If B is missing any part of A's primary key, a B tuple could match multiple A tuples and be counted in multiple aggregates.
152
152
153
-
**Left join aggregation**: The same constraint applies when using `A.aggr(B, ..., left=True)`. The left join allows A tuples with no matching B tuples to appear in the result (with NULL aggregates), but the grouping constraint remains: B must contain A's complete primary key.
153
+
**Keep all rows**: The same constraint applies when using `A.aggr(B, ..., keep_all_rows=True)`. This keeps all A tuples in the result even if they have no matching B tuples (with NULL aggregates), but the grouping constraint remains: B must contain A's complete primary key.
154
154
155
155
**Example**:
156
156
```python
@@ -694,7 +694,7 @@ WHERE c.contype = 'f'
694
694
695
695
**Rationale**: This ensures non-overlapping aggregation groups. Each B tuple belongs to exactly one A entity, preventing double-counting.
696
696
697
-
**Left join**: The same constraint applies for `A.aggr(B, ..., left=True)`. A tuples with no matching B tuples appear with NULL aggregates, but the grouping constraint remains.
697
+
**Keep all rows**: The same constraint applies for `A.aggr(B, ..., keep_all_rows=True)`. A tuples with no matching B tuples appear with NULL aggregates, but the grouping constraint remains.
698
698
699
699
## Testing Strategy
700
700
@@ -741,7 +741,7 @@ Semantic matching is a significant change to DataJoint's join semantics that imp
741
741
|**D6**: `@` operator | Deprecated - use `.join(semantic_check=False)`|
742
742
|**D7**: Migration | Utility function + automatic fallback computation |
0 commit comments