Pregunta

He cargado los siguientes datos de prueba:

name,   age,gender
"John", 33,m
"Sam",  33,m
"Julie",33,f
"Jimbo",, m

con esquema: name:STRING,age:INTEGER,gender:STRING y he confirmado que la fila de jimbo muestra un nulo para la columna "Edad" en la herramienta BigQuery Browser> MyDataSet> Detalles> Sección de vista previa.

Cuando ejecuto esta consulta:

SELECT AVG(age) FROM [peterprivatedata.testpeople]

obtengo 24.75 que es incorrecto.Esperaba 33 porque la Documentación para AVG dice "Filas con un valor nulono están incluidos en el cálculo ".

¿Estoy haciendo algo mal o es este un error conocido?(No sé si hay una lista de problemas públicos para comprobar).¿Cuál es la solución más sencilla para esto?

¿Fue útil?

Solución

Este es un error conocido en el que coincidimos con valores numéricos nulos a 0 en la importación.Actualmente estamos trabajando en una solución.Estos valores hacen Sin embargo, aparecen como no no definidos (lo cual por varias razones es diferente de NULL), por lo que puede verificar si se puede verificar.Por ejemplo:

SELECT sum(if(is_explicitly_defined(numeric_field), numeric_field, 0)) / 
       sum(if(is_explicitly_defined(numeric_field), 1, 0)) 
    AS my_avg FROM your_table

Alternativamente, podría usar otra columna para representar a IS_NULL.Entonces la consulta se vería como:

    SELECT sum(if(numeric_field_is_null, 0, numeric_field)) / 
       sum(if(numeric_field_is_null, 0, 1)) 
    AS my_avg FROM your_table

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top