Hello,

I agree that the various "num_values", "num_nulls" (or "null_count") and "null_rows" need to be made less ambiguous, especially when max_level > 1.

I would intuitively say the following:

- "num_rows" is equal to the number of repetition levels equal to 0 (or, if no repetition levels, equal to "num_values")

- "num_nulls" is equal to the number of definition levels smaller than the max def level (or, if no definition levels, equal to 0)

- "num_values" is actually the number of *levels*

- "null_count" and "num_nulls" should be equal, when both present

Regards

Antoine.



Le 21/10/2026 à 22:43, Adam Reeve a écrit :
Hi Andrew

My understanding is that these values may be different when there is a
schema element with repetition_type=repeated, like a list typed column for
example. num_values is the total number of leaf-level values, including
nulls, and matches the field with the same name in the V1 header. num_rows
is the number of logical rows, so would be the number of lists, including
nulls, for a list typed column. V2 data pages are guaranteed to be split
across row boundaries, so a page will always contain an integer number of
rows. V1 pages in comparison are allowed to be split in the middle of a row.

Cheers,
Adam

On Thu, 22 Oct 2026 at 05:12, Andrew Bell <[email protected]> wrote:

Hi,

Can someone please explain the difference between "num_values" and
"num_rows" in the DataPageHeaderV2 metadata structure?

Thanks,

--
Andrew Bell
[email protected]



Reply via email to