fix(data): expose actual snapshot row counts without cloning data

This commit is contained in:
boris
2026-09-13 17:03:34 +08:00
committed by boris
parent 0ed6752a73
commit 70c6f7e90b
+15
View File
@@ -2250,6 +2250,17 @@ impl DataSet {
.unwrap_or(&[])
}
/// Counts market, factor, candidate, benchmark and corporate-action rows without cloning them.
pub fn snapshot_row_counts(&self) -> (usize, usize, usize, usize, usize) {
(
self.market_by_date.values().map(Vec::len).sum(),
self.factor_by_date.values().map(Vec::len).sum(),
self.candidate_by_date.values().map(Vec::len).sum(),
self.benchmark_by_date.len(),
self.corporate_actions_by_date.values().map(Vec::len).sum(),
)
}
pub fn execution_quotes_on(&self, date: NaiveDate, symbol: &str) -> &[IntradayExecutionQuote] {
self.execution_quotes_by_date
.get(&date)
@@ -5474,6 +5485,10 @@ mod tests {
)
.expect("daily bundle dataset");
let row_count = dates.len() * symbols.len();
let expected_counts = (row_count, row_count, row_count, dates.len(), dates.len());
assert_eq!(flat.snapshot_row_counts(), expected_counts);
assert_eq!(grouped.snapshot_row_counts(), expected_counts);
assert_eq!(flat.calendar().days(), grouped.calendar().days());
assert_eq!(flat.benchmark_code(), grouped.benchmark_code());
for date in dates {