0
내가 가지고있는 다음과 같은 두 개의 쿼리, 하나의 SQL, 하나의 MDX :필터링 DistinctCount 측정 및 MDX는 SQL과 동일한 결과를 제공하지
SQL :
SELECT t.term_report_year, COUNT(*)
FROM(
SELECT DISTINCT de.term_report_year, fe.student_id
FROM warehouse.FactEnrolments fe
INNER JOIN warehouse.DimDate dd
ON fe.term_record_creation_fk = dd.DateKey
INNER JOIN warehouse.DimTermEnrolments de
ON fe.term_enrolments_fk = de.term_enrolments_pk
WHERE dd.ISOWeekNumberOfYear <= 8 OR dd.ISOYearCode < de.term_report_year
) t
GROUP BY t.term_report_year
ORDER BY term_report_year
MDX :
SELECT
NON EMPTY
Measures.[Enrolments] ON COLUMNS
,NON EMPTY
Filter
(
[Term Enrolments].[Term Year].Children *
[Term Record Creation].[ISO Year Code].children *
[Term Record Creation].[ISO Week Number Of Year].children
,
Cint([Term Record Creation].[ISO Week Number Of Year].CurrentMember.Member_Key) <= 8
OR
Cint([Term Record Creation].[ISO Year Code].CurrentMember.Member_key) < Cint([Term Enrolments].[Term Year].CurrentMember.Member_key)
) ON ROWS
FROM [Enrolments];
I "그 해의 8 주 전 또는 그 해에 등록한 한 해의 학생 수를 계산하십시오"여기서 year = term_year
인 아이디어를 표현하려고합니다.
내 SSAS 큐브에서 Enrolments
측정 값은 DistinctCount
에 student_id
입니다. SQL
쿼리에서 term_report_year
은 MDX
의 Term Year
과 같습니다.
누군가 두 검색어가 동일한 숫자를 제공하지 않는 이유를 설명해주세요. 2016에 대한 SQL
은 2803을, MDX
2948은?
저는 MDX가 몇 주 동안 두 번 계산되는 것과 관련이 있다고 생각하지만 해결 방법을 찾을 수는 없습니다.
고마워. 그거야. 왜 그것이 효과가 있고 다른 것은 효과가 없는지 설명 할 수 있습니까? 나는 쿼리에서 어떤 일이 일어나고 있는지 정말로 이해하지 못한다. – Ben
@fluffybonkers 확실합니다. 하위 쿼리가있는 FROM 절은 주만 <= 8을 반환합니다. 이렇게하면 연간 총계를 검색 할 때 전체 연도가 아니라 주 <= 8의 하위 집합이됩니다. – GregGalloway