2010-04-16 11 views
5

मैं एक गणना माप बनाना चाहता हूं जो आयाम विशेषता के आधार पर मेरी तथ्य तालिका में केवल रिकॉर्ड का एक विशिष्ट सबसेट सेट करता है।मैं आयाम विशेषता के आधार पर एमडीएक्स में एक गणना किए गए उपाय को कैसे परिभाषित करूं?

को देखते हुए:

आयाम

  • दिनांक
  • LedgerLineItem {प्रभारी, भुगतान, राइट-ऑफ, copay, क्रेडिट}

उपाय

  • LedgerAmount

रिश्ते
* LedgerLineItem FactLedger

की एक पतित आयाम है

अगर मैं LedgerLineItem.Type द्वारा LedgerAmount टूट मैं आसानी से,,, देख सकते हैं, कितना शुल्क लिया भुगतान किया जाता है क्रेडिट आदि नहीं बल्कि जब मैं करता हूँ LedgerLineItem द्वारा इसे तोड़ दो। टाइप करें मैं आसानी से क्रेडिट, भुगतान, क्रेडिट, आदि को एक पिवट तालिका में नहीं जोड़ सकता। मैं अलग-अलग गणना उपायों को बनाना चाहता हूं जो केवल प्रमुख प्रकार (या एकाधिक प्रकार) के आधारभूत तथ्यों को जोड़ते हैं।

वांछित आउटपुट का एक उदाहरण होगा:

| Year | Charged | Total Paid | Amount - Ledger | 
| 2008 | $1000 | $600  | -$400   | 
| 2009 | $2000 | $1500  | -$500   | 
| Total | $3000 | $2100  | -$900   | 

मैं गणना उपाय कई तरीकों से बनाने की कोशिश की है और हर एक कुछ परिस्थितियों में, लेकिन दूसरों में नहीं काम करता है। अब ईटीएल में ऐसा करने से पहले, मैंने इसे पहले से ही ईटीएल में किया है और यह ठीक काम करता है। एमडीएक्स को समझने के लिए सीखने के हिस्से के रूप में मैं क्या करने की कोशिश कर रहा हूं, यह पता लगाने के लिए है कि मैंने एमडीएक्स में ईटीएल में जो किया है उसे डुप्लिकेट करना है, अब तक मैं ऐसा करने में असमर्थ हूं।

यहां मेरे द्वारा किए गए दो प्रयास और उनके साथ समस्याएं हैं। यह केवल तब काम करता है जब लेजर प्रकार पिवोट तालिका में होता है। यह खाता बही प्रविष्टियों की सही मात्रा देता है (हालांकि इस मामले में यह के समान है [राशि - खाता बही] लेकिन जब मैं प्रकार दूर करने के लिए और बस सभी खाता बही प्रविष्टियों यह अज्ञात रिटर्न की राशि पाने की कोशिश

CREATE MEMBER CURRENTCUBE.[Measures].[Received Payment] 
AS CASE WHEN ([Ledger].[Type].currentMember = [Ledger].[Type].&[Credit]) 
OR ([Ledger].[Type].currentMember = [Ledger].[Type].&[Paid]) 
OR ([Ledger].[Type].currentMember = [Ledger].[Type].&[Held Money: Copay]) 
THEN [Measures].[Amount - ledger] 
ELSE 0 
END 
, FORMAT_STRING = "Currency" 
, VISIBLE = 1 
, ASSOCIATED_MEASURE_GROUP = 'Ledger' ; 

। यह केवल तभी काम करता है जब लीडर प्रकार पिवोट टेबल में नहीं होता है। यह हमेशा कुल भुगतान राशि देता है, जो गलत है जब मैं टाइप करके टुकड़ा कर रहा हूं क्योंकि मुझे केवल क्रेडिट के तहत क्रेडिट हिस्से, भुगतान किए गए हिस्से को भुगतान के तहत, $ 0 प्रभार के तहत, आदि

CREATE MEMBER CURRENTCUBE.[Measures].[Received Payment] 
AS sum({([Ledger].[Type].&[Credit]), ([Ledger].[Type].&[Paid]) 
, ([Ledger].[Type].&[Held Money: Copay])} 
, [Measures].[Amount - Ledger]) 
, FORMAT_STRING = "Currency" 
, VISIBLE = 1 
, ASSOCIATED_MEASURE_GROUP = 'Ledger' ; 

वहाँ यह सही संख्या है कि क्या Ledger.Type शामिल है की परवाह किए बिना लौट बनाने के लिए कोई तरीका है डी मेरी पिवट टेबल में या नहीं?

उत्तर

7

मौजूदा प्रयास करें:

CREATE MEMBER CURRENTCUBE.[Measures].[Received Payment] 
AS sum(Existing({([Ledger].[Type].&[Credit]), ([Ledger].[Type].&[Paid]) 
, ([Ledger].[Type].&[Held Money: Copay])}) 
, [Measures].[Amount - Ledger]) 
, FORMAT_STRING = "Currency" 
, VISIBLE = 1 
, ASSOCIATED_MEASURE_GROUP = 'Ledger' ; 

यह खेलने में सदस्यों पर ध्यान देना चाहिए।

+0

आप रॉक! यह वहीं है जिसे मैं ढूंढ रहा था। –

0

मुझे लगता है कि लेजर आयाम के पास फैक्ट लेजर के भीतर एक कुंजी है, लेकिन यह मुद्दा है कि यह पहले एमडीएक्स गणना वाले सदस्य के साथ सही नहीं है, मुझे विश्वास है कि आप इसके लिए पदानुक्रमों पर पुनर्विचार करना चाहेंगे।

फिर आपके लेजर प्रकार के आधार पर एक साधारण एसयूएम काम करेगा, क्या यह समझ में आता है?

+0

एक साधारण खाता प्रकार के आधार पर योग करता है काम करते हैं, मेरे पिवट टेबल में लेजर प्रकार शामिल करने के लिए जो अक्सर मामला है। जो मैं पूरा करने की कोशिश कर रहा हूं वह पिवोट टेबल में अलग-अलग इकाइयों के रूप में विभिन्न प्रकारों को शामिल किए बिना विभिन्न प्रकारों को प्रदर्शित करना है, कहें कि क्या मैं अपने व्यवसाय का अधिक व्यापक दृष्टिकोण चाहता हूं, जैसे कुल चार्ज, भुगतान और स्टाफ के घंटे काम करते हैं । कर्मचारियों के घंटों का काम खाता प्रकार से नहीं होता है, इसलिए कुल चार्ज करने के लिए लेजर प्रकार द्वारा टुकड़ा करना पड़ता है और भुगतान सभी मामलों में मेरे लिए एक अच्छा समाधान नहीं है, केवल विशिष्ट खाताधारक केवल रिपोर्ट में। –

1

Meff के जवाब पर टिप्पणी नहीं कर सकता, इसलिए मैं अपने खुद के पोस्ट करेंगे।

आप योग के बजाय सकल उपयोग करने पर विचार करना चाहिए, क्योंकि परिणाम हमेशा जिन्हें आप बीमा राशि का उपयोग कर उम्मीद नहीं हो सकता है: को छोड़कर जब मैं नहीं चाहता

CREATE MEMBER CURRENTCUBE.[Measures].[Received Payment] 
AS Aggregate(Existing({([Ledger].[Type].&[Credit]), ([Ledger].[Type].&[Paid]) 
, ([Ledger].[Type].&[Held Money: Copay])}) 
, [Measures].[Amount - Ledger]) 
, FORMAT_STRING = "Currency" 
, VISIBLE = 1 
, ASSOCIATED_MEASURE_GROUP = 'Ledger' ; 
+1

AGGREGATE, डिफ़ॉल्ट रूप से SUM के समान परिणाम लौटाएगा। AGGREGATE वास्तव में एसयूएम से बेहतर है क्योंकि, इसके साथ अन्य समेकन कार्यों का भी उपयोग किया जा सकता है। – SouravA

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