Do your rollups have any conditions? What are your rollup formulas? Do you use. ARRAYCOMPACT()?
Do your rollups have any conditions? What are your rollup formulas? Do you use. ARRAYCOMPACT()?
I’ve tried both ArrayJoin and ArrayCompact, both give similar results, disregarding NaN values and returning arrays that are essentially short on elements.

Here is my example Tasks Table, note the empty values, one in the Status, another in the Hours;

Note in Record 2 (Example of Issue) - if a Status is blank, the rollup still includes the blank value so the array can be created with 4 elements s “Todo”, “In progress”, “”, “Done”], but this isn’t the case for Number values.
For a workaround, I’m having to create a Formula on the Tasks table, concatenating the hours.

And now we can see the empty string value being included;

Another possible solution is to ensure that no numeric cells are blank, and contain a number - I’d be interested in understanding solving this problem in itself and will explore it further - but I feel that what we’re needing here is Airtable to amend the Rollup Field when working with numeric values. Perhaps they can add a numericArray(values) function to RollUp that will return NaN (or rather, just an empty return, similar to how the ArrayJoin works with string data) when a blank value is struck?
On a similar note, it would be overly useful if Lookup Fields had a toggle to also return blank values as a small empty bubble.
I’ve tried both ArrayJoin and ArrayCompact, both give similar results, disregarding NaN values and returning arrays that are essentially short on elements.

Here is my example Tasks Table, note the empty values, one in the Status, another in the Hours;

Note in Record 2 (Example of Issue) - if a Status is blank, the rollup still includes the blank value so the array can be created with 4 elements s “Todo”, “In progress”, “”, “Done”], but this isn’t the case for Number values.
For a workaround, I’m having to create a Formula on the Tasks table, concatenating the hours.

And now we can see the empty string value being included;

Another possible solution is to ensure that no numeric cells are blank, and contain a number - I’d be interested in understanding solving this problem in itself and will explore it further - but I feel that what we’re needing here is Airtable to amend the Rollup Field when working with numeric values. Perhaps they can add a numericArray(values) function to RollUp that will return NaN (or rather, just an empty return, similar to how the ArrayJoin works with string data) when a blank value is struck?
On a similar note, it would be overly useful if Lookup Fields had a toggle to also return blank values as a small empty bubble.
This looks like a bug to me.
This looks like a bug to me.
It’s annoying, that’s for sure.
Knowing that essentially, my Rollup had the aim of being used within an Automated Script - I decided to write my own Rollup method within a script, which has the benefit of no longer needing Rollup Fields.
Here’s my example script I built within the Scripting app.
let projectTable = base.getTable("Projects");
let taskTable = base.getTable("Tasks");
let projectRecord = await input.recordAsync('Select a record to use', projectTable);
let myTaskArray = projectRecord?.getCellValue("Tasks").map( element => element.id);
let taskQuery = await taskTable.selectRecordsAsync({
fields: e"Task Name", "Hours"],
recordIds:myTaskArray
});
let myRollupData = taskQuery.records.map( element => element.getCellValue("Hours"));
console.info(myRollupData);
It returns the expected hours in their correct order, and a null value where expected - perhaps I need to format this to NaN.

EDIT: Here is the Automation that manually creates a Rollup (such as numeric) into Text field and includes falsey values - uses input.config() for the primary RecordID.
let projectTable = base.getTable("Projects");
let taskTable = base.getTable("Tasks");
let inputConfig = input.config();
let projectRecord = await projectTable.selectRecordAsync(inputConfig.recordID, {
fields: e"Tasks"]
});
let myTaskArray = (projectRecord)?.getCellValue("Tasks").map( element => element.id);
let taskQuery = await taskTable.selectRecordsAsync({
fields: e"Hours"],
recordIds:myTaskArray
});
let myRollupData = taskQuery.records.map( element => element.getCellValue("Hours"));
console.info(myRollupData);
await projectTable.updateRecordAsync(inputConfig.recordID, {
"Hours Array": `${myRollupData}`
})