譯 SSRS 編寫帶引數的MDX報表

2022-01-18 05:07:34 字數 2197 閱讀 7563

編寫mdx報表長久以來對於報表人員來說都比較痛苦. 當然如果你用查詢設計器(query designer) 直接拖拉資料集那就很方便,但是你們有沒有想過查詢設計器是怎麼建立mdx的.或者建立的引數是如何工作的? 我聽到很多用analysis services 作為資料來源的(包括我)報表人員說寫引數太難了,所以他們用查詢設計器做報表. 我想關鍵的問題是查詢設計器做的mdx看起來要比實際上更複雜.如果你知道一些mdx基礎,你應該能直接寫mdx而不是用查詢分析器 ,你就是喜歡用查詢分析器也沒關係.本文的目的是指導你寫基礎的mdx語句,並且引數化 .

我們會用到兩個 mdx 函式 :

strtoset

返回字元表示式指定的集合(msdn的定義),其實就是把你寫轉為mdx集合.

strtomember

返回字元表示式指定的成員(msdn的定義).就是把你寫的轉為mdx成員.

建立乙個新的report server 專案和報表,並且使用adventure works cube作為資料來源. 然後建立名為categorysales 的資料集.在查詢設計器裡面點選設計模式(design mode)按鈕

,然後開始寫查詢. 下面是個無引數的查詢例子.

]這個查詢返回總銷量,不過就報表本身而言它沒任何意義.讓我們新增銷量對應的產品目錄.

select

[measures

].[internet sales amount]on

columns,

[product

].[category

].children on

rows

from

[adventure works

]

這對我們假想的使用者需求來說還不夠少,除了看所有產品的銷量以外,他們還想弄個引數,使他們可以從下拉框中選擇想要看的型別 .為此,我們點選查詢引數按鈕

來建立乙個引數.

點選確認以後,你需要修改mdx 來使用你建立的引數, 修改如下:

select

[measures

].[internet sales amount]on

columns,

strtoset(

@productcategory, constrained) on

rows

from

[adventure works

]

我們用 strtoset 來轉換使用者選擇的變數值,是的mdx可以理解它們.  constrained 標記表示要確保有乙個成員在集合中.

點選ok,然後一路建立下去.. 你會注意到,productcategory的下拉框已經自動建立. 

現在讓我們進一步完善這個例子. 我們再新增兩個函式,來建立乙個日期範圍.再次單擊查詢引數按鈕,新增引數startdate 和 enddate ,然後引用 date 維度和 date屬性. 預設值隨便填.

在 mdx 裡面新增where子句來限制時間範圍. 我們用 strtomember 來轉換.

select

[measures

].[internet sales amount]on

columns,

strtoset(

@productcategory, constrained) on

rows

from

[adventure works

]where strtomember(@startdate, constrained) :strtomember(@enddate, constrained)

下面是預覽結果

原文連線

譯 怎樣編寫移動優先的CSS

原文 how to write mobile first css 譯者 huansky 構建響應式 是今天前端開發人員必備的技能。當我們談論響應式 時,移動優先這個詞立刻就會浮現。我們知道從移動優先的角度設計的重要性。不幸的是,關於移動優先的配置方法很少提及。今天,我想和大家分享一下移動優先的樣式方...

譯 怎樣編寫移動優先的CSS

原文 how to write mobile first css 譯者 huansky 構建響應式 是今天前端開發人員必備的技能。當我們談論響應式 時,移動優先這個詞立刻就會浮現。我們知道從移動優先的角度設計的重要性。不幸的是,關於移動優先的配置方法很少提及。今天,我想和大家分享一下移動優先的樣式方...

帶引數的方法

import inte ce computer nsobject int addnum1 int num1 andnum2 int num2 end implementation computer 返回值型別 方法名 引數型別 引數名 形參標籤 引數型別 引數名 int addnum1 int nu...