2

次のテストデータをロードしました。

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

with schema:name:STRING,age:INTEGER,gender:STRINGまた、BigQuery Browser Tool > mydataset > Details > Preview セクションで、Jimbo 行の列「age」に null が表示されることを確認しました。

このクエリを実行すると:

SELECT AVG(age) FROM [peterprivatedata.testpeople]

私は間違っている 24.75 を取得します。AVG のドキュメントに「NULL 値を持つ行は計算に含まれない」と記載されているため、33 を期待していました。

私は何か間違ったことをしていますか、それとも既知のバグですか? (チェックする公開問題のリストがあるかどうかはわかりません)。これに対する最も簡単な回避策は何ですか?

4

1 に答える 1

2

これは既知のバグで、インポート時に null 数値を強制的に 0 にします。現在、修正に取り組んでいます。ただし、これらの値未定義として表示されるため (さまざまな理由で null とは異なります)、IS_EXPLICITLY_DEFINED を確認できます。例えば:

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

または、別の列を使用して is_null を表すこともできます。次に、クエリは次のようになります。

    SELECT sum(if(numeric_field_is_null, 0, numeric_field)) / 
       sum(if(numeric_field_is_null, 0, 1)) 
    AS my_avg FROM your_table
于 2012-10-02T17:08:50.140 に答える