使用MDX hos选择第一行?

使用MDX hos选择第一行?,mdx,Mdx,我正在使用sharepoint报表生成器 在我的数据中(下图)-我想得到所有第一行-黄色的 我该怎么做呢 这是MDX代码。我应该写什么才能得到黄色的行 SELECT NON EMPTY {[Measures].[Antal unikke brugere - Visiteret Tid]} ON COLUMNS ,NON EMPTY { [Borger].[Anonym Borgernøgle DPR].[Anonym Borgernøgle DPR]

我正在使用sharepoint报表生成器

在我的数据中(下图)-我想得到所有第一行-黄色的

我该怎么做呢

这是MDX代码。我应该写什么才能得到黄色的行

SELECT 
  NON EMPTY 
    {[Measures].[Antal unikke brugere - Visiteret Tid]} ON COLUMNS
 ,NON EMPTY 
    {
        [Borger].[Anonym Borgernøgle DPR].[Anonym Borgernøgle DPR].ALLMEMBERS*
        [SundhedOgOmsorg - Ydelse].[Ydelse].[Ydelse].ALLMEMBERS*
        [Kalender].[År].[År].ALLMEMBERS*
        [Kalender].[Måned].[Måned].ALLMEMBERS
    }
  DIMENSION PROPERTIES 
    MEMBER_CAPTION
   ,MEMBER_UNIQUE_NAME
   ON ROWS
FROM 
(
  SELECT 
    {
      [SundhedOgOmsorg - Ydelse].[Ydelse].&[12.1 Hjemmetrænerforløb]
     ,[SundhedOgOmsorg - Ydelse].[Ydelse].&[12.2 Komb. Hjemmetræner & Terapeutforløb]
     ,[SundhedOgOmsorg - Ydelse].[Ydelse].&[12.3 Komplekse Rehabiliteringsforløb]
     ,[SundhedOgOmsorg - Ydelse].[Ydelse].&[12.7. hverdagsrehab. revis.gr. m. tp.]
    } ON COLUMNS
  FROM 
  (
    SELECT 
      {[SundhedOgOmsorg - Modul].[Modul].&[Hjemmehjælp]} ON COLUMNS
    FROM [FrbLis]
  )
)
WHERE 
  [SundhedOgOmsorg - Modul].[Modul].&[Hjemmehjælp]
CELL PROPERTIES 
  VALUE
 ,BACK_COLOR
 ,FORE_COLOR
 ,FORMATTED_VALUE
 ,FORMAT_STRING
 ,FONT_NAME
 ,FONT_SIZE
 ,FONT_FLAGS;

您可以尝试使用以下迭代
mdx
函数之一:

-

-

使用过滤器要复杂一些,因为您需要根据元组的相对位置指定特定的元组。生成更简单一些。我将尝试提供一个针对MS
AdvWrks
cube的示例

我认为这与您的情况相对类似:

SELECT 
  {[Measures].[Internet Sales Amount]} ON 0
 ,NON EMPTY 
      [Product].[Product Categories].[Product]
    * 
      {
          [Date].[Calendar].[Date].&[20050801]
        : 
          [Date].[Calendar].[Date].&[20050807]
      } ON 1
FROM [Adventure Works];
您会喜欢我用红色标记的行(很多产品只有一行)

因此,如果我们现在将以下多维表达式应用于多维数据集:

WITH 
  SET [prodSet] AS 
    [Product].[Product Categories].[Product] 
  SET [prodDtSet] AS 
    Generate
    (
      [prodSet] AS P
     ,Head
      (
          P.Current
        * 
          NonEmpty
          (
            {
                [Date].[Calendar].[Date].&[20050801]
              : 
                [Date].[Calendar].[Date].&[20050807]
            }
           ,(
              P.Current
             ,[Measures].[Internet Sales Amount]
            )
          )
      )
    ) 
SELECT 
  {[Measures].[Internet Sales Amount]} ON 0
 ,[prodDtSet] ON 1
FROM [Adventure Works];
我们得到了所需的结果:

你能把我的例子适应你的环境吗


我将进一步发挥作用,并提供一个使用
过滤器
的解决方案(在某种程度上,它将比Generate方法稍微复杂一点)

下面是一种使用
过滤器的方法:

WITH 
  SET [prodSet] AS 
    [Product].[Product Categories].[Product] 
  SET [prodDtSet] AS 
    NonEmpty
    (
        [prodSet]
      * 
        {
            [Date].[Calendar].[Date].&[20050801]
          : 
            [Date].[Calendar].[Date].&[20050807]
        }
     ,[Measures].[Internet Sales Amount]
    ) 
  SET [prodDtSetFiltered] AS 
    Filter
    (
      [prodDtSet]
     ,
        (NOT 
            [prodDtSet].Item(
            [prodDtSet].CurrentOrdinal - 1).Item(0)
          IS 
            [prodDtSet].Item(
            [prodDtSet].CurrentOrdinal - 2).Item(0))
      OR 
        [prodDtSet].CurrentOrdinal = 1
    ) 
SELECT 
  {[Measures].[Internet Sales Amount]} ON 0
 ,[prodDtSetFiltered] ON 1
FROM [Adventure Works];
结果如下:


您可以尝试使用以下迭代的
mdx
函数之一:

-

-

使用过滤器要复杂一些,因为您需要根据元组的相对位置指定特定的元组。生成更简单一些。我将尝试提供一个针对MS
AdvWrks
cube的示例

我认为这与您的情况相对类似:

SELECT 
  {[Measures].[Internet Sales Amount]} ON 0
 ,NON EMPTY 
      [Product].[Product Categories].[Product]
    * 
      {
          [Date].[Calendar].[Date].&[20050801]
        : 
          [Date].[Calendar].[Date].&[20050807]
      } ON 1
FROM [Adventure Works];
您会喜欢我用红色标记的行(很多产品只有一行)

因此,如果我们现在将以下多维表达式应用于多维数据集:

WITH 
  SET [prodSet] AS 
    [Product].[Product Categories].[Product] 
  SET [prodDtSet] AS 
    Generate
    (
      [prodSet] AS P
     ,Head
      (
          P.Current
        * 
          NonEmpty
          (
            {
                [Date].[Calendar].[Date].&[20050801]
              : 
                [Date].[Calendar].[Date].&[20050807]
            }
           ,(
              P.Current
             ,[Measures].[Internet Sales Amount]
            )
          )
      )
    ) 
SELECT 
  {[Measures].[Internet Sales Amount]} ON 0
 ,[prodDtSet] ON 1
FROM [Adventure Works];
我们得到了所需的结果:

你能把我的例子适应你的环境吗


我将进一步发挥作用,并提供一个使用
过滤器
的解决方案(在某种程度上,它将比Generate方法稍微复杂一点)

下面是一种使用
过滤器的方法:

WITH 
  SET [prodSet] AS 
    [Product].[Product Categories].[Product] 
  SET [prodDtSet] AS 
    NonEmpty
    (
        [prodSet]
      * 
        {
            [Date].[Calendar].[Date].&[20050801]
          : 
            [Date].[Calendar].[Date].&[20050807]
        }
     ,[Measures].[Internet Sales Amount]
    ) 
  SET [prodDtSetFiltered] AS 
    Filter
    (
      [prodDtSet]
     ,
        (NOT 
            [prodDtSet].Item(
            [prodDtSet].CurrentOrdinal - 1).Item(0)
          IS 
            [prodDtSet].Item(
            [prodDtSet].CurrentOrdinal - 2).Item(0))
      OR 
        [prodDtSet].CurrentOrdinal = 1
    ) 
SELECT 
  {[Measures].[Internet Sales Amount]} ON 0
 ,[prodDtSetFiltered] ON 1
FROM [Adventure Works];
结果如下:


我喜欢你的问题-你喜欢我的答案吗?我喜欢你的问题-你喜欢我的答案吗?是:)它起作用了-最后一个带过滤器的问题。非常感谢。@RuneFrederiksberg-很高兴-这一个很有趣。是的:)它成功了-最后一个带过滤器的。非常感谢。@RuneFrederiksberg-很高兴-这一次很有趣。