Aracılığıyla paylaş


Anlama geçiş sırası ve çözme sırası (MDX)

Bir küp, bir MDX komut sonucunda hesaplandığında, birçok aşamaları hesaplamasını kullanımına bağlı olarak çeşitli hesaplama ile ilgili özellikleri gidebilirsiniz.Bu aşamada, her olarak adlandırılmıştır bir hesaplama geçişi.

Bir hesaplama geçiş için hesaplama geçişi numarası adlı bir sıralı konumu belirtilebilir.Tam bir küpün tüm hücreleri hesaplamak için gerekli olan bir hesaplama geçiş sayısı hesaplama küp derinliğini geçirmek için verilir.

olgu tablosundaki ve writeback veri, yalnızca pass 0 etkiler.Komut dosyalarını, veri doldurmak sonra 0; her atama için geçirmek ve yeni bir seferde bir komut deyim oluşturur hesaplamak.MDX komut dosyası dışında başvurular mutlak pass 0, pass kübe ilişkin komut dosyası tarafından oluşturulan son bakın.

Hesaplanan üyeleri tüm geçiş sırasında oluşturulur, ancak ifade sırasında geçerli olan pass uygulanır.Önceki geçiş hesaplanan ölçü birimi içeren ama boş (null) değer.

çözme sırası

Çözme sırası olan rakip ifadeleri hesaplama önceliğini belirler.Tek bir geçiş içinde çözdü iki şey sırası belirler:

  • The order in which Microsoft SQL Server Analysis Services evaluates dimensions, members, calculated members, custom rollups, and calculated cells.

  • Sırayı Analysis Services özel üyelerin, hesaplanan üyeler, özel toplama ve hesaplanan hücreleri hesaplar.

En yüksek çözme sırası üyesiyle önceliğe sahiptir.

Not

Bu öncelik istisnası toplama işlevi.toplamak işlevini içeren, hesaplanan üyeler herhangi bölen, hesaplanan ölçü daha düşük çözme sırası vardır.

Hesaplama önceliği

Öncelik sırası içinde tanımlanan bir ifade geçerli saat için değerleri alınır tanımlayan hesaplama hücre.Hesaplama önceliğe göre aşağıdaki algoritmayı giderilmiştir:

  1. Hesaplama listesi (CL) tüm hesaplamalar geçerli taneciklik sırasında oluşturulan hücre veya aşağıdaki

  2. CL hesaplamalarında sınıflandırılır: En yüksek WINS (HW) veya en yakın WINS (CW)

    1. Saat YÖNÜNDE olan özel toplamaları, tekli işletmenler, semi-additive ölçüler, dondurma

    2. HW olan tüm diğer hesaplamaları

  3. Pass tarafından sipariş edilen tüm DONANıM tarafından oluşturulan sipariş Hesaplama listesi (OCL)

  4. Her kalan saat YÖNÜNDE

    1. Her hesaba için (C) OCL (yüksekten en düşük)

    2. CW geçerli hücreye C ' daha yakın, içinde OCL CW eklemek ve için bir sonraki CW devam

    3. CW C'den daha yüksek bir geçiş işlemi sırasında daha sonra CW OCL ekleme ve için bir sonraki CW devam

    4. Sonraki C ile devam edin.

  5. En yüksek OCL hesaplamasında geçerli aynı taneciklik değilse hücre, sonra toplamakka işlevlerini kullanarak toplamakka değeri hesaplama

çözme sırası Değerleri ve önceliği

Sipariş değerleri olabilir çözdü aralık-8181-65535 arasında.Bu aralıkta, bazı değerler hesaplamaları, belirli bir tür için karşılık gelen sipariş aşağıdaki gösterildiği gibi çözdü tablo.

Hesaplama

çözme sırası

Özel üye formülleri

-5119

Tekli işleçler

-5119

Görsel toplamlarını hesaplama

-4096

(Aksi halde değil belirtilmişse) tüm diğer hesaplamaları

0

Ayar çözme sırası değerlerini yalnızca pozitif tamsayılara kullanmanız önerilir.Önceki içinde gösterilen çözme sırası değerlerini daha düşük değerler atarsanız tablo, hesaplama geçişi unpredic olabilmesi tablo.Örneğin, hesaplamanın bir hesaplanan üye ait varsayılan özel toplama formül değerini-5119 düşük çözme sırası değeri alır.Bir tür düşük çözme sırası değeri, hesaplanan üyeler özel toplama formüllerin önce hesaplanmasını sağlar ve yanlış sonuçlar oluşturabilir.

Oluşturma ve değiştirme çözme sırası

Küp tasarımcısında, Hesaplamalar bölmesi, değiştirebileceğiniz çözme sırası hesaplanan üyeler ve hesaplamaların sırasını değiştirerek, hesaplanan hücreler.

MDX içinde kullanabileceğiniz SOLVE_ORDER anahtar sözcük, oluşturmak veya değiştirmek için üyeleri ve hesaplanan hücreler hesaplanır.

çözme sırası Örnekleri

Solve siparişinin olası olan karmaşıklık göstermek için , her hiçbir çözme sırası sorunları tek tek sahip iki sorgularla MDX) sorgularını aşağıdaki bir dizi başlatır.Bu iki sorgu gerektiren bir sorgu birleştirilmesi çözme sırası.

1 Query — değişiklikleri gelir ve masraflar

Ilk MDX sorgusu, gelir ve masrafların her yarı yıl için farkı görmek için , basit bir MDX sorgusu aşağıdaki örnektekine benzer oluşturun:

WITH
MEMBER [Time].[Year Difference] AS
   [Time].[2nd half] - [Time].[1st half]
SELECT 
   { [Account].[Income], [Account].[Expenses] } ON COLUMNS,
   { [Time].[1st half], [Time].[2nd half], [Time].[Year Difference] } ON ROWS
FROM Financials

Bu sorguda olduğu yalnızca hesaplanan üye, Year Difference. Yalnızca bir hesaplanmış üye olduğundan çözme sırası küp herhangi bir hesaplanan üyeler kullandığınız sürece, geçerli değildir.

Bu bir MDX sorgusu, bir sonuç üretir küme aşağıdaki tabloda benzeridir.

 

Geliri

Masraflar

1. yarı

5000

4200

2. yarı

8000

7000

Yıl fark

3000

2800

2 Query — Percentage of net geliri sonra Harcamalar

Ikinci sorguyu sonra masraflar her yarı yıl için net geliri yüzdesini görmek için aşağıdaki MDX sorgusu kullanın:

WITH
MEMBER [Account].[Net Income] AS
   ([Account].[Income],  [Account].[Expenses]) / [Account].[Income]
SELECT
   { [Account].[Income], [Account].[Expenses], [Account].[Net Income] } ON COLUMNS,
   { [Time].[1st half], [Time].[2nd half] } ON ROWS
FROM Financials

Bu gibi önceki bir MDX sorgusu yalnızca bir tek hesaplanan, üye Net Incomeve bu nedenle herhangi çözme sırası zorluklar yok.

Bu bir MDX sorgusu biraz farklı bir sonuç kümesi, aşağıdakine benzer üreten tablo.

 

Geliri

Masraflar

NET gelir

1. yarı

5000

4200

0.16

2. yarı

8000

7000

0.125

hesaplanan üye yerleşimini farkı arasýndaki sonuç kümesindeki ilk sorguyu ve sorguya ikinci gelir.Ilk sorguda hesaplanan üye SATıRSAY eksen, ikinci bir sorguda gösterilen SÜTUNSAY eksen değil bir parçasıdır.Bu fark yerleşimini iki hesaplanan üyeleri tek bir MDX sorgusu birleştiren sonraki sorgudaki önemli olur.

3 Sorgu — yıl fark ve net geliri hesaplamalar birleşik

Yukarıdaki örnekler her ikisi de tek bir MDX sorgusu birleştirme bu son sorgudaki çözme sırası önemli olur.Hesaplamalar, doğru sırayla gerçekleşmesi emin olmak için hesaplamaları kullanarak ortaya çıktığı sırayı tanımlamak SOLVE_ORDER anahtar sözcük.

The SOLVE_ORDER keyword specifies the çözme sırası of calculated members in an MDX query or a CREATE MEMBER command. Ile kullanılan Tamsayı değerleri SOLVE_ORDER anahtar sözcük göreli, sıfırdan başlamak ve yapılandırmazsanız ardışık olarak gerek. Değeri, yalnızca üyelere daha yüksek bir değere sahip hesaplama gelen türetilen değerleri temel alarak bir üye hesaplamakta MDX bildirir.Hesaplanan üye olmayan tanımlanırsa, SOLVE_ORDER anahtar sözcük, varsayılan değer olarak, üye sıfır hesaplanır.

Örneğin, ilk iki örnek sorgularda kullanılan hesaplamaları birleştirirseniz, üyeleri iki hesaplanan Year Difference ve Net Income, tek bir kesişen hücre MDX sorgusu örneğin sonucu dataset içinde. Tek yolu belirlemek için nasıl Analysis Services Bu değerlendirme hücre olarak çözme sırası. Bu hücre oluşturmak için kullanılan formüllerin bağlı olarak farklı sonuçlar üretecektir çözme sırası iki üye hesaplanır.

Önce aşağıdaki sorgu MDX ilk iki sorgularda kullanılan hesaplamaları birleştirme deneyin:

WITH
MEMBER [Time].[Year Difference] AS
   '[Time].[2nd half] - [Time].[1st half],
   SOLVE_ORDER = 1
MEMBER [Account].[Net Income] AS
   '([Account].[Income] - [Account].[Expenses]) / [Account].[Income]',
   SOLVE_ORDER = 2
SELECT
   { [Account].[Income], [Account].[Expenses], [Account].[Net Income] } ON COLUMNS,
   { [Time].[1st half], [Time].[2nd half], [Time].[Year Difference] } ON ROWS
FROM Financials

In this combined MDX query example, Net Income has the highest solve order, so it takes precedence when the two expressions interact.Analysis Services evaluates the cell in question by using the Net Income formula.Aşağıdaki gösterildiği gibi hesaplama sonuçlar bu iç içe tablo.

 

Geliri

Masraflar

NET gelir

1. yarı

5000

4200

0.16

2. yarı

8000

7000

0.125

Yıl fark

3000

2800

0.066

Paylaşılan sonucu hücre formülünü temel alır Net Income. Diğer bir deyişle, Analysis Services Paylaşılan sonucu hesaplar hücre ile Year Difference Veri, aşağıdaki formül (netlik için sonuç yuvarlanır) üretir:

((8000 - 5000) - (7000 - 4200)) / (8000 - 5000) = 0.066 

veya

(3000 - 2800) / 3000 = 0.066

Ancak, Analysis Services Paylaşılan sonucu hesaplar hücre farklı MDX sorguda hesaplanan üyeler çözüm siparişlerini geçtiğinizde. Aşağıdaki birleştirilmiş MDX sorgusu için hesaplanan üyeler çözme sırası tersine çevirir:

WITH
MEMBER [Time].[Year Difference] AS
   '[Time].[2nd half] - [Time].[1st half],
   SOLVE_ORDER = 2
MEMBER [Money].[Net Income] AS
   '([Money].[Income] - [Money].[Expenses]) / [Money].[Income]',
   SOLVE_ORDER = 1
SELECT
   { [Money].[Income], [Money].[Expenses], [Money].[Net Income] } ON COLUMNS,
   { [Time].[1st half], [Time].[2nd half], [Time].[Year Difference] } ON ROWS
FROM TestCube

Hesaplanan üyeler sırasını, geçildi gibi Analysis Services kullanan Year Difference Formülün hücrenin aşağıdaki gösterildiği gibi değerlendirmek için tablo.

 

Geliri

Masraflar

NET gelir

1. yarı

5000

4200

0.16

2. yarı

8000

7000

0.125

Yıl fark

3000

2800

-0.035

Bu sorgu kullandığından Year Difference Formül ile Net Income Veri, paylaşılan hücre formülünü aşağıdaki hesaplamayı benzer:

((8000 - 7000) / 8000) - ((5000 - 4200) / 5000) = -0.035 

Or

0.125 - 0.16 = -0.035

Ek konuları

Çözmek, özellikle küp boyutları hesaplanan üye, özel toplama formülleri veya hesaplanmış hücreleri içeren yüksek sayıda içinde çalışılabilecek çok karmaşık bir sorun olması.Ne zaman Analysis Services bir MDX sorgusu değerlendirir. Analysis Services MDX sorguda belirtilen bir kübün boyutları dahil, belirli bir seferde içinde yer alan her şey için çözme sırası değeri dikkate alınır.