में प्रारंभ और समाप्ति तिथि पर विचार करके तिथि के अनुसार कैसे एकत्र करें मुझे आयाम में प्रारंभ और समाप्ति तिथियों पर विचार करने की तारीखों की तारीख में दिनांक के अनुसार मापने की आवश्यकता है। उद्देश्य एक विशिष्ट स्कूल के छात्रों की संख्या को गिनना है जो एक अवधि में प्रत्येक दिन सक्रिय होते हैं।एमडीएक्स - एक आयाम
निम्नलिखित SQL कोड डेटा वेयरहाउस (घन का स्रोत) पर काम करता है।
SELECT
t.[date]
,count(distinct a.SKStudent) as Students
FROM DM.DimTime t
CROSS JOIN DM.FactStudents a
INNER JOIN DM.DimStudents m ON a.SKStudent = m.SKStudent
INNER JOIN DM.DimSchool e ON a.SKSchool = e.SKSchool
WHERE t.[date] between '20170502' and '20170512'
and e.SchoolCode = 123456
and t.[date] between m.[StartDate] and m.[EndtDate]
GROUP BY t.[data]
परिणाम सेट निम्नलिखित की तरह है:
+--------------+----------+
| date | Students |
+--------------+----------+
| 2017-05-02 | 567 |
| 2017-05-03 | 567 |
| 2017-05-04 | 568 |
| 2017-05-05 | 570 |
| 2017-05-06 | 570 |
| 2017-05-07 | 570 |
| 2017-05-08 | 573 |
| 2017-05-09 | 573 |
| 2017-05-10 | 571 |
| 2017-05-11 | 568 |
| 2017-05-12 | 568 |
+--------------+----------+
मैं MDX कोड बनाया का प्रयास करें। मैंने जो कोशिश की वह निम्नलिखित है। मैं कैसे ('???' के निशान के बीच) मामले बयान में तर्क का प्रयोग दिन को फ़िल्टर नहीं जानता:
WITH SET DateRange AS
[Dim Time].[Date].&[20170502]:[Dim Time].[Date].&[20170512]
MEMBER StudentsByDay AS
AGGREGATE(DateRange,
???CASE WHEN DateRange.CURRENTMEMBER
BETWEEN [Dim Students].[Start Date]
AND [Dim Students].[End Date]
THEN [Measures].[Students Count]
ELSE NULL END???)
SELECT
NON EMPTY { [StudentsByDay] } ON COLUMNS,
NON EMPTY { [DateRange] } ON ROWS
FROM [Education]
WHERE ([Dim School].[School Code].&[123456])
मैं नहीं समझ सकता है कि यह कैसे लागू करने के लिए। मेरी तिथि (t.date) अज्ञात है। यह रनटाइम में सूचित है। क्या आपका मतलब DimTime द्वारा फैक्टस्ट्यूडेंट्स को एकत्रित करने वाला एक नया तथ्य बनाना था? –
मैंने ऊपर दिए गए चरणों की ओर इशारा किया है। –
अब मैं समझता हूं। मैं इस तथ्य में हमारी वास्तविकता के लिए पंक्तियों की मात्रा के बारे में डरता हूं: 1,3 एम छात्र * 365 दिन (औसत में)। –