Forum Discussion
Counting nulls
Hi,
counting null values, i have;
= let alist =
{1,2,2,"a",null, null, 2,"a",3,2,null, "a"}
in
List.Count( alist) - List.NonNullCount( alist)
or
= let alist =
{1,2,2,"a",null, null, 2,"a",3,2,null, "a"}
in
List.Count( List.Select( alist, (x)=>
Value.Is(x, type null)) )woud anyone like to suggest differerent / better way ?
Hi Dicken,
For pure null values, I would keep your first approach. It is probably the cleanest and easiest to read:
let alist = {1,2,2,"a",null, null, 2,"a",3,2,null, "a"} in List.Count(alist) - List.NonNullCount(alist)List.NonNullCount is built to count non-null items, so total count minus non-null count gives the null count.
List.Accumulate(alist, 0, (i,x) => i + Number.From(x=null))
List.Sum(List.Transform( alist, each Number.From(_=null)))
13 Replies
- Parchitect
Solution Sage
Hi Dicken,
For pure null values, I would keep your first approach. It is probably the cleanest and easiest to read:
let alist = {1,2,2,"a",null, null, 2,"a",3,2,null, "a"} in List.Count(alist) - List.NonNullCount(alist)List.NonNullCount is built to count non-null items, so total count minus non-null count gives the null count.
- jgeddes
Super User
This should work too...
let alist = {1,2,2,"a",null, null, 2,"a",3,2,null, "a"} in List.Count( List.RemoveNulls( alist )) - slorin
Super User
Hi,
List.Count(List.PositionOf(alist, null, Occurrence.All))
Stéphane
- Dicken
Post Prodigy
Thanks to all responses, always nice to see what I had not thought of.
- slorin
Super User
List.Accumulate(alist, 0, (i,x) => i + Number.From(x=null))
List.Sum(List.Transform( alist, each Number.From(_=null)))
- Dicken
Post Prodigy
a take on the accumulate version, so not to count but show where null;
= let alist = {"a",1,null, null,"a",3,"b"} , t = "a" in List.Accumulate( alist, {} , (s,c)=> s & { Number.From( c = null ) } ) - slorin
Super User
You don't need List.Accumulate, just List.Transform
List.Transform( alist , each Number.From(_ = null))
- Dicken
Post Prodigy
I know, I just liked it.
- Dicken
Post Prodigy
just to add recgarding the count , remove nul, i did say count nulls.
- jgeddes
Super User
My bad. I removed my answer as a solution. You could do this...
let alist = {1,2,2,"a",null, null, 2,"a",3,2,null, "a"} in List.Count( alist ) - List.Count( List.RemoveNulls( alist ))
- AlienSx
Super User
let fx = (x, y) => if List.Count(x) = 0 then y else @ fx(List.Skip(x), y + Number.From(x{0} = null)) in fx({1, 2, 2, "a", null, null, 2, "a", 3, 2, null, "a"}, 0)