2012-05-11 12 views
0

SSAS、OLAP、MDXの構文が新しくなりました。OlapキューブとMDXとNON EMPTY

だから私は(SSASへのリンクサーバーによって)TSQLでキューブを照会するために、このMDXを持っており、それが正常に動作します:

select * from openquery(GCUBE, 
'SELECT NON EMPTY { [Measures].[Valore] } ON COLUMNS, 
NON EMPTY { 
([Prodotti].[Top Marca].[Top Marca].ALLMEMBERS 
* [Prodotti].[Top Codice].[Top Codice].ALLMEMBERS 
* [Agenti].[Vw Agenti].[Vw Agenti].ALLMEMBERS 
* [Calendario].[AnnoMese].[Mese].ALLMEMBERS 
* [Prodotti].[Ordinamento].[Ordinamento].ALLMEMBERS 
* [Prodotti].[Top].[Top].ALLMEMBERS) 
} 
DIMENSION PROPERTIES MEMBER_CAPTION 
ON ROWS FROM (SELECT ({ [Calendario].[Anno].&[2012] }) 
ON COLUMNS FROM (SELECT ({ [Agenti].[Vw Agenti].&[005] }) 
ON COLUMNS FROM [Vendite])) WHERE ( [Calendario].[Anno].&[2012])' 
) 

まあ、[Prodotti].[Top Marca]は50トップの販売とテーブルに基づく寸法であり、このMDXは特定のIDエージェント[Vw Agenti] = 005によってフィルタリングされています。

エージェントが会社の50のトップセールブランドをどのように販売しているかを調べることです。

クエリは正常に動作しますが、このエージェントが販売していないブランドが1つあり、空の行を表示する必要があります。

下の図は、位置(ランク)31に対してのレコードがないことを示しています。

MDX Query result

私はNON EMPTYについての概念を理解するが、私はまた、空のレコードを表示する権利構文を見つけることができません。

MDXをどのように変更すればよいですか?

私はNON EMPTYを削除しようとしましたが、私は一般的なエラーが出る:

Cannot execute the query against OLE DB provider "MSOLAP" for linked server "GCUBE" 

私は、キューブのディメンションTop Marcaを変更する必要がありますか?

私を助けたり、これを解決するための適切なヒントを与えることができる人には、事前に感謝します。

+0

NON EMPTYを削除するときのエラーは何ですか? –

+0

@Marc、エラーの詳細を追加しましたが、一般的なエラーが表示されます –

+0

なぜ列と行の両方にAgentiを要求していますか? –

答えて

1

私はSSAS/TSQLの専門家ではないんだけど、私は最初の単純な要求をしようとするだろう。このTSQLのものなしでそれを実行するための

SELECT 

[Measures].[Valore]ON COLUMNS, 

NON EMPTY [Prodotti].[Top Marca].[Top Marca].ALLMEMBERS ON ROWS 

FROM (SELECT { [Calendario].[Anno].&[2012] } ON COLUMNS 
    FROM (SELECT { [Agenti].[Vw Agenti].&[005] } ON COLUMNS 
    FROM [Vendite] 
) 
) ' 

任意の方法?

+0

+1はシンプルに開始します。これは、ほとんどの場合、複雑なMDXクエリを取得する最良の方法です。何か基本的な作業をしてから、複雑さを重ねる。問題の原因となる可能性のある50種類の候補があるのではなく、クエリーに追加するときに、困惑する問題を1つずつ特定します。 –

関連する問題