MongoDB Connector for BI の既知の問題
SQL の互換性の問題
BI Connector は空のセットを返し、MySQLNULL
は 値を返します
一部の SQL 集計関数 (SUM
MIN
、 、またはCOUNT
など)は、その集計関数に一致する値がない場合、NULL
を返します。この応答は実質的に空の行です。
まったく同じSQLクエリの場合、BI Connector はどの集計関数に対してもNULL
を返しません。代わりに空のセットが返されます。
例
過去 1 年に提供されたクラスごとの学生のテスト パフォーマンスを分析しています。 Tableau を使用してSQLクエリを実行し、最高のテスト スコアと最低のテスト スコア、およびクラス内のすべてのスコアの合計と数など、各クラスの統計情報を見つけます。
SELECT SUM(scores), COUNT(*), COUNT(scores), MAX(scores), MIN(scores) FROM students_2019 GROUP BY class;
残念ながら、翌年のデータに対して誤ってクエリを実行したため、クエリで検索できるテスト スコアはありません。
学生データが MySQL に保存されている場合、このクエリは、 SUM
、 MAX
、 MIN
関数で計算されたフィールドのNULL
値と 計算されたフィールドの0
を含む 1 つの行を返します。 COUNT
関数と 。
SELECT SUM(scores), COUNT(*), COUNT(scores), MAX(scores), MIN(scores) FROM students_2019 GROUP BY class; +-------------+----------+---------------+-------------+-------------+ | sum(scores) | count(*) | count(scores) | max(scores) | min(scores) | +-------------+----------+---------------+-------------+-------------+ | NULL | 0 | 0 | NULL | NULL | +-------------+----------+---------------+-------------+-------------+
学生データが MongoDB に保存され、BI Connector 経由でアクセスされている場合、このクエリは空のセットを返します。
SELECT SUM(scores), COUNT(*), COUNT(scores), MAX(scores), MIN(scores) FROM students_2019 GROUP BY class; Empty set (0.00 sec)
マッピングNULL
エラーにより BI Connector が 値を返します
既知のマッピング エラーが発生し、BI Connector がすべてのNULL
値を返すことがあります。 このエラーは、 NULL
となる可能性のある配列フィールドを含み、かつ同じ配列にNULL
となる追加のフィールドが含まれているコレクションをクエリする場合に発生します。 このエラーの回避策としては、 $match
フィルターを使用して、 createView
メソッドとともにフィールド$type
がarray
であるドキュメントのみを返すビューを作成することです。
例
という名前の配列フィールドがあり、場合によってはresponse.schedule
NULL
nextDeparture
ある、という名前のコレクションがある場合、次のビューを作成できます。
db.createView('nonullsched', '"nextDeparture"', [{'$match': {'response.schedule': {'$type': 'array'}}}])