MongoDB Connector for BI 的已知问题
SQL兼容性问题
BI Connector返回空集,其中MySQL返回NULL
值
某些 SQL聚合函数 (如SUM
、MIN
或COUNT
)如果该聚合函数没有匹配值,则返回NULL
。此响应实际上是一个空行。
对于完全相同的SQL查询,BI Connector 不会为任何聚合函数返回NULL
;相反,它会返回一个空集。
例子
您正在分析一所大学去年开设的每门课程的学生测试表现。 您可以使用 Tableau 运行SQL查询来查找每个班级的统计信息,包括最高和最低测试分数以及班级中所有分数的总和和计数。
SELECT SUM(scores), COUNT(*), COUNT(scores), MAX(scores), MIN(scores) FROM students_2019 GROUP BY class;
遗憾的是,您不小心对明年班级的数据运行了查询,因此该查询没有可供查找的测试分数。
如果学生数据存储在 MySQL 中,此查询将返回一行,其中包含使用 SUM
、 MAX
和 MIN
函数计算得出的字段的NULL
值,以及使用 、 和函数计算得出的字段的0
值。使用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)
BI Connector由于映射错误而返回NULL
值
可能出现已知映射错误,导致 BI Connector 返回所有NULL
值。 当您查询的集合包含一个可以为NULL
的数组字段,并且同一数组包含另一个也可以为NULL
的字段时,就会出现此错误。 此错误的解决方法是创建一个带有$match
筛选器的视图,该筛选器仅使用createView
方法返回字段$type
为array
的文档。
例子
对于名为nextDeparture
的collection,其中具有名为response.schedule
(有时为NULL
)的字段,您可以创建以下视图:
db.createView('nonullsched', '"nextDeparture"', [{'$match': {'response.schedule': {'$type': 'array'}}}])