2011-11-14 13 views
9

एक एसएसएएस घन में, मैं एक गैर-समय आयाम के लिए LastChild के रूप में एकत्रित उपायों को कैसे बना सकता हूं?गैर-समय आयामों में अंतिम-बच्चे के लिए परिकलित सदस्य?

स्रोत डेटा में किसी भी दिन किसी भी व्यावसायिक रिकॉर्ड के कई संस्करण हैं। समय आयाम में DATE की ग्रैन्युलरिटी है, सेकंड & मिलीसेकंड नहीं है।

तथ्य रिकॉर्ड में टाइमस्टैम्प और एक वृद्धिशील (पहचान) प्राथमिक कुंजी है। असल में, मैं जो चाहता हूं उसे किसी दिए गए दिनांक पर सभी संपादनों के लिए अंतिम मान के रूप में मापने की गणना करना है।

विकल्प मैं अब तक देखा है दो श्रेणियों में से एक में आते हैं:

  • एक समय आयाम है कि कुछ सेकंड के लिए नीचे चला जाता है का उत्पादन। इसका परिणाम बहुत बड़ा और अक्षम समय आयाम होगा।

या

  • उपायों छुपाएं और उन्हें गणना उपायों कि प्राथमिक कुंजी के आधार पर किसी भी तिथि के लिए अंतिम मान को देखने के साथ बदलें। यह बोझिल और कम कुशल है।

क्या इस समस्या को हल करने के लिए कोई मीठा स्थान या वैकल्पिक तकनीक है?

डेटा के प्राकृतिक पदानुक्रम है:

  1. व्यापार कुंजी
  2. रिकॉर्ड टाइमस्टैम्प
  3. सरोगेट कुंजी (समय आयाम करने के लिए लिंक)

उत्तर

5

नहीं, आप पूरी तरह से नहीं कर सकते एक बनाने latChild बिना समय आयाम के गुण:

enter image description here

आप क्या कर सकते हैं अपने अंतिम डीवीवी पर एक प्रश्न बनाते हैं ताकि आप अंतिम बच्चा मूल्य दे सकें और माप समूह बनाने के लिए इसका इस्तेमाल कर सकें। उदाहरण:

स्क्रिप्ट:

create table dim(
id int not null primary key, 
name varchar(50)) 
insert into dim values (1,'one'),(2,'two') 

create table fact(
id int not null primary key, 
dimId int not null, 
value numeric (12,3), 
constraint fk_fact_dim foreign key(dimId) references dim(id)) 

insert into fact values (1,1,5) 
insert into fact values (2,1,3) 

insert into fact values (3,2,10) 
insert into fact values (4,2,20) 

बहुत ही सरल स्क्रिप्ट है कि एक मंद और एक तथ्य तालिका बनाता है। यहाँ एक सरल चयन और परिणाम के बाद मुझे लगता है कि आप चाहते हैं, तो 3 और 20 आयाम की आईडी के आधार पर पिछले मूल्यों होगा: पर

enter image description here

निर्माण करने के लिए है कि बहुत सरल है, बस ठीक क्लिक अपने डीएसवी और एक नया नामित क्वेरी जोड़ें और अपना अंतिम मूल्य बनाने के लिए क्वेरी को सूचित करें। मेरे मामले में है:

select dimId, 
(select top 1 value from fact where dimId=F.dimId order by id desc) as lastValue 
from fact F 
group by dimId 

एक तार्किक प्राथमिक कुंजी बना सकते हैं और आयाम तालिका से लिंक: enter image description here

और अपने घन पर, ठीक है, किसी भी रिक्त क्षेत्र पर क्लिक करें, "शो सभी तालिकाओं" और जोड़ने आपकी नई टेबल

और अपने घन के रूप में "कोई एकत्रित" आपकी क्वेरी के लिए एक नया उपाय बनाते हैं, क्योंकि आप पहले से ही एकत्रित किया है पर:

enter image description here

परिणाम:

enter image description here

संबंधित मुद्दे