Commit 765ae8a
Add retention metric type for cohort analysis (#121)
* Add retention metric type for cohort retention analysis
* Auto-update JSON schema
* Fix: dialect-aware dates, use dim.sql_expr, normalize filters
* Fix: expand {model} placeholders, strict periods default, parse retention_granularity
* Fix: expand {model} in ts_sql, resolve entity dim sql_expr, include metric.filters
* Fix: validate single retention metric per query, preserve offset
* Fix: raise error when retention model inference is ambiguous
* Fix: match retention model by resolved metric identity, not name
* Fix: restore filter classification unpack compatibility
_classify_filters_for_pushdown returns a 3-tuple but callers in generate()
and _generate_with_preaggregation() only unpacked 2 values, causing
ValueError at runtime for any query that hits filter classification.
Fix all callers to unpack 3 values and handle window_dim_filters:
- generate(): merge into main_query_filters (outer WHERE)
- _generate_with_preaggregation(): merge into per-model pushdown filters
Also guard dim.window access with getattr since the Dimension model does
not have a window field on this branch.
* Fix: add retention to validation allowlists in validate_model and validate_metric
* Fix: use identity check for metric model resolution in all three fallback loops
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>1 parent 026bfe5 commit 765ae8a
6 files changed
Lines changed: 1515 additions & 15 deletions
File tree
- sidemantic
- adapters
- core
- sql
- tests/metrics
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
215 | 215 | | |
216 | 216 | | |
217 | 217 | | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
218 | 231 | | |
219 | 232 | | |
220 | 233 | | |
| |||
285 | 298 | | |
286 | 299 | | |
287 | 300 | | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
288 | 314 | | |
289 | 315 | | |
290 | 316 | | |
| |||
553 | 579 | | |
554 | 580 | | |
555 | 581 | | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
556 | 595 | | |
557 | 596 | | |
558 | 597 | | |
559 | 598 | | |
560 | 599 | | |
561 | 600 | | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
562 | 619 | | |
563 | 620 | | |
564 | 621 | | |
| |||
593 | 650 | | |
594 | 651 | | |
595 | 652 | | |
596 | | - | |
| 653 | + | |
| 654 | + | |
597 | 655 | | |
598 | 656 | | |
599 | 657 | | |
| |||
1148 | 1206 | | |
1149 | 1207 | | |
1150 | 1208 | | |
| 1209 | + | |
| 1210 | + | |
| 1211 | + | |
| 1212 | + | |
| 1213 | + | |
| 1214 | + | |
| 1215 | + | |
| 1216 | + | |
| 1217 | + | |
| 1218 | + | |
| 1219 | + | |
| 1220 | + | |
| 1221 | + | |
1151 | 1222 | | |
1152 | 1223 | | |
1153 | 1224 | | |
| |||
1218 | 1289 | | |
1219 | 1290 | | |
1220 | 1291 | | |
| 1292 | + | |
| 1293 | + | |
| 1294 | + | |
| 1295 | + | |
| 1296 | + | |
| 1297 | + | |
| 1298 | + | |
| 1299 | + | |
| 1300 | + | |
| 1301 | + | |
| 1302 | + | |
| 1303 | + | |
| 1304 | + | |
1221 | 1305 | | |
1222 | 1306 | | |
1223 | 1307 | | |
| |||
1486 | 1570 | | |
1487 | 1571 | | |
1488 | 1572 | | |
| 1573 | + | |
| 1574 | + | |
| 1575 | + | |
| 1576 | + | |
| 1577 | + | |
| 1578 | + | |
| 1579 | + | |
| 1580 | + | |
| 1581 | + | |
| 1582 | + | |
| 1583 | + | |
| 1584 | + | |
| 1585 | + | |
1489 | 1586 | | |
1490 | 1587 | | |
1491 | 1588 | | |
1492 | 1589 | | |
1493 | 1590 | | |
1494 | 1591 | | |
| 1592 | + | |
| 1593 | + | |
| 1594 | + | |
| 1595 | + | |
| 1596 | + | |
| 1597 | + | |
| 1598 | + | |
| 1599 | + | |
| 1600 | + | |
| 1601 | + | |
| 1602 | + | |
| 1603 | + | |
| 1604 | + | |
| 1605 | + | |
| 1606 | + | |
| 1607 | + | |
| 1608 | + | |
| 1609 | + | |
1495 | 1610 | | |
1496 | 1611 | | |
1497 | 1612 | | |
| |||
1526 | 1641 | | |
1527 | 1642 | | |
1528 | 1643 | | |
1529 | | - | |
| 1644 | + | |
| 1645 | + | |
1530 | 1646 | | |
1531 | 1647 | | |
1532 | 1648 | | |
| |||
1831 | 1947 | | |
1832 | 1948 | | |
1833 | 1949 | | |
| 1950 | + | |
| 1951 | + | |
| 1952 | + | |
| 1953 | + | |
| 1954 | + | |
| 1955 | + | |
| 1956 | + | |
| 1957 | + | |
| 1958 | + | |
| 1959 | + | |
| 1960 | + | |
| 1961 | + | |
| 1962 | + | |
1834 | 1963 | | |
1835 | 1964 | | |
1836 | 1965 | | |
| |||
1901 | 2030 | | |
1902 | 2031 | | |
1903 | 2032 | | |
| 2033 | + | |
| 2034 | + | |
| 2035 | + | |
| 2036 | + | |
| 2037 | + | |
| 2038 | + | |
| 2039 | + | |
| 2040 | + | |
| 2041 | + | |
| 2042 | + | |
| 2043 | + | |
| 2044 | + | |
| 2045 | + | |
1904 | 2046 | | |
1905 | 2047 | | |
1906 | 2048 | | |
| |||
2169 | 2311 | | |
2170 | 2312 | | |
2171 | 2313 | | |
| 2314 | + | |
| 2315 | + | |
| 2316 | + | |
| 2317 | + | |
| 2318 | + | |
| 2319 | + | |
| 2320 | + | |
| 2321 | + | |
| 2322 | + | |
| 2323 | + | |
| 2324 | + | |
| 2325 | + | |
| 2326 | + | |
2172 | 2327 | | |
2173 | 2328 | | |
2174 | 2329 | | |
2175 | 2330 | | |
2176 | 2331 | | |
2177 | 2332 | | |
| 2333 | + | |
| 2334 | + | |
| 2335 | + | |
| 2336 | + | |
| 2337 | + | |
| 2338 | + | |
| 2339 | + | |
| 2340 | + | |
| 2341 | + | |
| 2342 | + | |
| 2343 | + | |
| 2344 | + | |
| 2345 | + | |
| 2346 | + | |
| 2347 | + | |
| 2348 | + | |
| 2349 | + | |
| 2350 | + | |
2178 | 2351 | | |
2179 | 2352 | | |
2180 | 2353 | | |
| |||
2209 | 2382 | | |
2210 | 2383 | | |
2211 | 2384 | | |
2212 | | - | |
| 2385 | + | |
| 2386 | + | |
2213 | 2387 | | |
2214 | 2388 | | |
2215 | 2389 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
297 | 297 | | |
298 | 298 | | |
299 | 299 | | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
300 | 307 | | |
301 | 308 | | |
302 | 309 | | |
| |||
413 | 420 | | |
414 | 421 | | |
415 | 422 | | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
416 | 429 | | |
417 | 430 | | |
418 | 431 | | |
| |||
574 | 587 | | |
575 | 588 | | |
576 | 589 | | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
577 | 599 | | |
578 | 600 | | |
579 | 601 | | |
| |||
655 | 677 | | |
656 | 678 | | |
657 | 679 | | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
658 | 688 | | |
659 | 689 | | |
660 | 690 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
204 | 204 | | |
205 | 205 | | |
206 | 206 | | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
207 | 212 | | |
208 | 213 | | |
209 | 214 | | |
210 | | - | |
| 215 | + | |
211 | 216 | | |
212 | 217 | | |
213 | 218 | | |
| |||
252 | 257 | | |
253 | 258 | | |
254 | 259 | | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
255 | 272 | | |
256 | 273 | | |
257 | 274 | | |
| |||
0 commit comments