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 NULL
Connector 가 값을 반환합니다.
BI Connector가 모든 NULL
값을 반환하는 알려진 매핑 오류가 발생할 수 있습니다. 이 오류는 NULL
일 수 있는 배열 필드가 포함된 collection을 쿼리하고 동일한 배열에 NULL
일 수 있는 추가 필드가 포함되어 있을 때 발생합니다. 이 오류의 해결 방법은 createView
메서드를 사용하여 $type
필드가 array
인 문서만 반환하는 $match
필터를 사용하여 뷰를 만드는 것입니다.
예시
이름이 response.schedule
인 배열 필드(때로는 NULL
)가 있고 이름이 nextDeparture
인 collection의 경우 다음과 같은 뷰를 만들 수 있습니다.
db.createView('nonullsched', '"nextDeparture"', [{'$match': {'response.schedule': {'$type': 'array'}}}])