翻譯介紹15個經典的MDX查詢 02and03

2021-06-03 23:05:01 字數 3105 閱讀 1537

02.

所有商店中銷售前10名的產品類別有哪些?

listing 2 直接利用topcount()函式查詢銷售前10名的產品。

(這是一種最直接的方法,topcount()函式本身自帶排序(降序)的功能)

listing 2: determining top 10 product categories

說明:查詢銷售前10名的產品類別

select on columns,

topcount( [product].[product category].members, 10, ([unit sales]) ) on rows

from sales

查詢結果展示:

03. 在美國,剛剛過去的三個季度裡都有銷售量的食品和飲料有哪些?

(這個查詢也可以理解為「過去三個季度裡食品和飲料銷售量都不為0的產品有哪些?」)。查詢listing 3 示範了如何動態的確定對應的時間集合—這是一項很有價值的技巧。時間集合動態隨著cube資料的更新而改變(也就是說該查詢無論你在什麼時候執行,無論cube的資料作了多少次更新,結果都是最近三個月的資料)。首先,自定義集合lastquarter定義了時間維度中有銷售記錄的最近乙個季度。自定義集合last3quarters在lastquarter的基礎上利用range()函式(實際沒有range()函式,冒號:就是作者說的函式)指定了以lastquarter為最後乙個季度的連續的三個季度。我不直接在last3quarter(原文是lastquarter,我認為是作者筆誤)的定義中使用tail()函式是因為這樣做返回的可能不是連續的三個季度;因為空記錄的季度肯能出現在任何季度,filter()函式只能排除掉空季度。lag()函式結合range()函式,確保了返回的三個季度是連續的。

在這個查詢中,item(0).item(0) 函式取得指定集合的第乙個成員,因為集合在技術上就是一組元組[如:來自不同維度的一系列成員也可以組成乙個元組],所以用第乙個item()函式選擇元組,第二個item()選擇該元組裡的成員。(我們可以這樣理解,集合由元組組成,元組由成員組成)。

listing_03.determining brands sold during the past three quarters.txt

說明:在過去三個季度裡都存在銷售量的商品銷售記錄

with set[lastquarter]as'tail(filter([time].[quarter].members,not

isempty([time].currentmember)),1)'

set[last3quarters]as' [lastquarter].item(0).item(0).lag(2) : [lastquarter].item(0).item(0)'

select[last3quarters]on columns,

non empty union(descendants( [food], [product].[brand name] ),descendants( [drink],

[product].[brand name] ))on rows

fromsales

查詢結果展示:

注:topcount

從集合頂端開始返回指定數目的項,可以選擇首先對集合排序。

例子select on columns,

topcount(descendants([store].[all stores].[usa],[store].[store city] ), 10, [store sales]) on rows from sales

subset

從集合中返回元素的子集。

例子select on columns,

on rows from sales

tail

從集合尾部返回子集。

例子select on columns,

on rows from sales

lag返回指定成員的所在維度上的上乙個成員。

例子with member [measures].[a1] as 'time.currentmember.lag(1).name'

select on columns , on rows from [sales]

filter

返回根據搜尋條件對集合進行篩選所得到的集合。

例子select on columns,

on rows from sales

item

從集合中返回指定元組或者從元組中返回指定成員。

例子with set kkk as '* }'

member measures.jjj as 'tupletostr(kkk.item(0).item(0))',solve_order=1

select on columns,

on rows

from sales

union

返回兩個集合的並集,可以選擇保留重複項。

例子select on columns,

union(usa.children, canada.children, all)

on rows from sales  

翻譯介紹15個經典的MDX查詢 04 05

04,最近銷售趨勢最好的產品有哪些?查詢listing 4首先利用topcount 查得銷售最好的產品,然後利用上個查詢listing 3 介紹過的動態時間技巧定義最近6個月的銷售量。該查詢安排在行顯示銷售最好的10種產品,列顯示最近的6個月,值區域為這6個月的unit sales。你可以用線狀圖展...

15個經典的MDX 1 3

讀者請求最多的是更多的mdx資訊。他們通常要求更多的mdx例子,在這裡,我提供15個典型的mdx語句,用的是sql server 2000 analysis services foodmart 2000 sample cubes,以下例子都以sales多維資料集為例。1.在美國所有州都銷售的有那些產...

15個很具代表性的MDX查詢語句

15個很具代表性的mdx查詢語句 出處 www.sqlmag.com 原作者russ whitney 02.所有商店中銷售前10名的產品類別有哪些?listing 2 直接利用topcount 函式查詢銷售前10名的產品。這是一種最直接的方法,topcount 函式本身自帶排序 降序 的功能 lis...