Skip to content

Commit 7d9414d

Browse files
authored
feat(dataobj): expose cardinality estimations in UI (#16376)
1 parent 1b4f1f5 commit 7d9414d

File tree

3 files changed

+39
-6
lines changed

3 files changed

+39
-6
lines changed

pkg/dataobj/explorer/inspect.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,18 @@ type ColumnWithPages struct {
3737
MetadataSize uint64 `json:"metadata_size"`
3838
ValuesCount uint64 `json:"values_count"`
3939
Pages []PageInfo `json:"pages"`
40+
Statistics Statistics `json:"statistics"`
41+
}
42+
43+
type Statistics struct {
44+
CardinalityCount uint64 `json:"cardinality_count"`
45+
}
46+
47+
func NewStatsFrom(md *datasetmd.Statistics) (res Statistics) {
48+
if md != nil {
49+
res.CardinalityCount = md.CardinalityCount
50+
}
51+
return
4052
}
4153

4254
type PageInfo struct {
@@ -213,6 +225,7 @@ func inspectLogsSection(ctx context.Context, reader encoding.Decoder, section *f
213225
MetadataSize: col.Info.MetadataSize,
214226
ValuesCount: col.Info.ValuesCount,
215227
Pages: pageInfos,
228+
Statistics: NewStatsFrom(col.Info.Statistics),
216229
}
217230
return nil
218231
})

pkg/ui/frontend/src/components/explorer/file-metadata.tsx

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -278,9 +278,8 @@ function Section({
278278
Section #{sectionIndex + 1}: {section.type}
279279
</h3>
280280
<svg
281-
className={`w-5 h-5 transform transition-transform duration-300 ${
282-
isExpanded ? "rotate-180" : ""
283-
}`}
281+
className={`w-5 h-5 transform transition-transform duration-300 ${isExpanded ? "rotate-180" : ""
282+
}`}
284283
fill="none"
285284
stroke="currentColor"
286285
viewBox="0 0 24 24"
@@ -411,9 +410,8 @@ function Column({ column, isExpanded, onToggle }: ColumnProps) {
411410
</Badge>
412411
</div>
413412
<svg
414-
className={`w-4 h-4 transform transition-transform ${
415-
isExpanded ? "rotate-180" : ""
416-
}`}
413+
className={`w-4 h-4 transform transition-transform ${isExpanded ? "rotate-180" : ""
414+
}`}
417415
fill="none"
418416
stroke="currentColor"
419417
viewBox="0 0 24 24"
@@ -480,6 +478,23 @@ function ColumnStats({ column }: ColumnStatsProps) {
480478
{formatBytes(column.metadata_offset)}
481479
</div>
482480
</div>
481+
{column.statistics && (
482+
<div className="col-span-full">
483+
<div className="rounded-lg bg-muted p-6">
484+
<div className="text-sm text-muted-foreground mb-4">Statistics</div>
485+
<div className="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-4 gap-4">
486+
{column.statistics.cardinality_count !== undefined && (
487+
<div>
488+
<div className="text-sm text-muted-foreground">Cardinality</div>
489+
<div className="font-medium">
490+
{column.statistics.cardinality_count.toLocaleString()}
491+
</div>
492+
</div>
493+
)}
494+
</div>
495+
</div>
496+
</div>
497+
)}
483498
</div>
484499
);
485500
}

pkg/ui/frontend/src/types/explorer.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ export interface ColumnInfo {
3434
metadata_size: number;
3535
values_count: number;
3636
pages: PageInfo[];
37+
statistics?: ColumnStatistics;
3738
}
3839

3940
export interface SectionMetadata {
@@ -49,3 +50,7 @@ export interface FileMetadataResponse {
4950
error?: string;
5051
lastModified: string;
5152
}
53+
54+
interface ColumnStatistics {
55+
cardinality_count?: number;
56+
}

0 commit comments

Comments
 (0)