Build enriched_samples CTE with all computed columns
(self, low_time: Optional[datetime] = None,
high_time: Optional[datetime] = None)
| 435 | return required |
| 436 | |
| 437 | def _build_enriched_samples_cte(self, low_time: Optional[datetime] = None, |
| 438 | high_time: Optional[datetime] = None) -> str: |
| 439 | """Build enriched_samples CTE with all computed columns""" |
| 440 | # Load base samples |
| 441 | if self.use_materialized: |
| 442 | base_samples = "SELECT * FROM xtop_samples" |
| 443 | else: |
| 444 | # Prefer per-hour parquet, fallback to CSV for hours without parquet |
| 445 | base_samples = self.csv_filter.build_mixed_source_select( |
| 446 | 'samples', low_time, high_time |
| 447 | ) |
| 448 | |
| 449 | # Load computed columns |
| 450 | computed_cols = self.fragments.load('computed_columns') |
| 451 | |
| 452 | return f""" SELECT |
| 453 | samples.*, |
| 454 | {computed_cols} |
| 455 | FROM ({base_samples}) AS samples""" |
| 456 | |
| 457 | def _build_base_samples_cte(self, required_sources: Set[str], |
| 458 | where_clause: str, |
no test coverage detected