2016-04-29 82 views
0

我正在学习MDX,我有一个问题可以创建一个百分比。 基本上,我从Google Analytics API中为多组页面提取数据。 对于每组,我提取UniquePageviews的数量。MDX:从相同维度中存在的度量计算百分比

的SQL列看起来像这样:

  • 日期
  • deviceCategory
  • 媒体
  • uniquePageviews
  • 交易
  • set_of_page(该行包含组页面的名称。为了简化:1.首先,2.第二,3.第三)
  • 品牌(品牌A,品牌B)
  • 市场(市场X,市场Y)

这是当前视图我有: http://i.stack.imgur.com/ZTC30.png

我想已经是UniquePageviews的百分比从该组页面1到2和2至3于是:UniquePageviews 2/Uniquepageviews 1 & UniquePageviews 3/Uniquepageviews 2.

http://i.stack.imgur.com/xf2gc.png

你知道在MDX中做到这一点的简单方法吗?

下面是代码我有现在显示浏览量:

WITH 
SET [~COLUMNS_Brand_Brand] AS 
SET [~COLUMNS_Market_Market] AS 
    {[Market].[Market].Members} 
SET [~COLUMNS_set_of_page segment_set_of_page] AS 
    {[set_of_page].[set_of_page].Members} 
SET [~ROWS] AS 
    {[Date].[Date].Members} 
SELECT 
NON EMPTY NonEmptyCrossJoin([~COLUMNS_Brand_Brand], NonEmptyCrossJoin([~COLUMNS_Market_Market], [~COLUMNS_set_of_page_set_of_page])) ON COLUMNS, 
NON EMPTY [~ROWS] ON ROWS 
FROM [MySQL_Cube] 

非常感谢!

回答

0

目前你的mdx隐含地采取措施?所有的mdx查询都需要测量,所以你当前的脚本必须选择默认的多维数据集度量 - 我将称这[Measures].[NumTransactions]
另外你的第一个SET似乎是空白的。因此,让我们假设完整,明确脚本是:

WITH 
SET [~COLUMNS_Brand_Brand] AS {[Brand].[Brand].[All]} 
SET [~COLUMNS_Market_Market] AS 
    {[Market].[Market].Members} 
SET [~COLUMNS_set_of_page segment_set_of_page] AS 
    {[set_of_page].[set_of_page].Members} 
SET [~ROWS] AS 
    {[Date].[Date].Members} 
SELECT 
NON EMPTY NonEmptyCrossJoin([~COLUMNS_Brand_Brand], NonEmptyCrossJoin([~COLUMNS_Market_Market], [~COLUMNS_set_of_page_set_of_page])) ON COLUMNS, 
NON EMPTY [~ROWS] ON ROWS 
FROM [MySQL_Cube] 
WHERE [Measures].[NumTransactions]; 

我使用MS SSAS所以nitation的有点不确定,与你的作品,但只是为了帮我,我会切换到*运营商的交叉连接:

WITH 
SET [~COLUMNS_Brand_Brand] AS {[Brand].[Brand].[All]} 
SET [~COLUMNS_Market_Market] AS 
    {[Market].[Market].Members} 
SET [~COLUMNS_set_of_page segment_set_of_page] AS 
    {[set_of_page].[set_of_page].Members} 
SET [~ROWS] AS 
    {[Date].[Date].Members} 
SELECT 
NON EMPTY 
    [~COLUMNS_Brand_Brand] 
    *[~COLUMNS_Market_Market] 
    *[~COLUMNS_set_of_page_set_of_page] ON COLUMNS, 
NON EMPTY [~ROWS] ON ROWS 
FROM [MySQL_Cube] 
WHERE [Measures].[NumTransactions]; 

我希望(如未经测试,我有点不能确定所有方面将保留),我们可以再加上一点由前一分为当前页面定制meassure得到的百分比:

WITH 
SET [~COLUMNS_Brand_Brand] AS {[Brand].[Brand].[All]} 
SET [~COLUMNS_Market_Market] AS 
    {[Market].[Market].Members} 
SET [~COLUMNS_set_of_page segment_set_of_page] AS 
    {[set_of_page].[set_of_page].Members} 
SET [~ROWS] AS 
    {[Date].[Date].Members} 
MEMBER [Measures].[NumTransactionsPercent] AS 
    [set_of_page].CURRENTMEMBER 
/[set_of_page].CURRENTMEMBER.LAG(1) 
SELECT 
NON EMPTY 
    [~COLUMNS_Brand_Brand] 
    *[~COLUMNS_Market_Market] 
    *[~COLUMNS_set_of_page_set_of_page] ON COLUMNS, 
NON EMPTY [~ROWS] ON ROWS 
FROM [MySQL_Cube] 
WHERE [Measures].[NumTransactionsPercent]; //[Measures].[NumTransactions];