Search code examples
mdx

Where is the problem in :The function expects a tuple expression for the 2 argument. A tuple set expression was used. ERROR


I'm trying to set in the parameter of the report two values if I set values in parameter @Hakemuksen tyyppi (Unknown + some other value) it gives error -

An error has occurred during report processing. (rsProcessingAborted) Query execution failed for dataset 'Table_1'. (rsErrorExecutingCommand) The function expects a tuple expression for the 2 argument. A tuple set expression was used.

        with
--M002
MEMBER KeskimaarainenKasittelyaikaAutomatisoiduilleKokonaisprosesseille AS (
    SUM(linkmember([Aika].[Päivämäärä].currentmember, [Aika - Päätöksen tekohetki].[Päivämäärä]),
        IIF([Measures].[Automaattisten prosessien m] = 1, [Measures].[Hakemusten Keskimääräinen Käsittelyaika], 0))
)
MEMBER KeskimaarainenKasittelyaikaManuaalisilleKokonaisprosesseille AS (
    SUM(linkmember([Aika].[Päivämäärä].currentmember, [Aika - Päätöksen tekohetki].[Päivämäärä]),
        IIF([Measures].[Automaattisten prosessien m] = 0 or IsNull([Measures].[Automaattisten prosessien m]), [Measures].[Hakemusten Keskimääräinen Käsittelyaika], 0))
)

select {
 [Measures].[Automaattinen hakemuksen tarkistus m]
,[Measures].[Automaattinen hakemuksen tarkistus r]
,[Measures].[Automaattinen ennakkoilmoitussanoma m]
,[Measures].[Automaattinen ennakkoilmoitussanoma r]
,[Measures].[Automaattinen ansiotietopyynto m]
,[Measures].[Automaattinen ansiotietopyynto r]
,[Measures].[Automaattisten lähetteiden m]
,[Measures].[Lähetteiden m]
,[Measures].[Automaattinen laakarin kasittely m]
,[Measures].[Automaattinen laakarin kasittely r]
,[Measures].[Automaattisten eläkeratkaisujen m]
,[Measures].[Ratkaistujen hakemusten m]
,[Measures].[Automaattisten päätösten m]
,[Measures].[Päätösten m]
,[Measures].[Automaattisten maksatus m]
,[Measures].[Automaattisten maksatus r]
,[Measures].[Muu tehtava noussut m]
,[Measures].[Saapuneiden hakemusten m]
,[Measures].[Automaattisten prosessien m]
,[Measures].[Automaatioaste m]
,[Measures].[Hakemusten määrä]
,KeskimaarainenKasittelyaikaAutomatisoiduilleKokonaisprosesseille
,KeskimaarainenKasittelyaikaManuaalisilleKokonaisprosesseille
} on columns,


{
EXISTS([Hakemuslaji].[Hakemuslaji].[Alintaso].members - {[Hakemuslaji].[Hakemuslaji].[Alintaso].[osa-aikaeläke], [Hakemuslaji].[Hakemuslaji].[Alintaso].[varhennettu vanhuuseläke]},
        {[Hakemuslaji].[Hakemuslaji].[työkyvyttömyyseläke],
         [Hakemuslaji].[Hakemuslaji].[kuntoutustuki],
         [Hakemuslaji].[Hakemuslaji].[osatyökyvyttömyyseläke],
         [Hakemuslaji].[Hakemuslaji].[osakuntoutustuki]}) *
{STRTOMEMBER(@TarkastelujaksonAlku) : STRTOMEMBER(@TarkastelujaksonLoppu)} *
{STRTOMEMBER("[Aika].[Kuukausi].&[" + LEFT(RIGHT(STRTOMEMBER(@TarkastelujaksonAlku).Name, 5), 2) + "]&[" + LEFT(STRTOMEMBER(@TarkastelujaksonAlku).Name, 4) + "]" ) :
STRTOMEMBER("[Aika].[Kuukausi].&[" + LEFT(RIGHT(STRTOMEMBER(@TarkastelujaksonLoppu).Name, 5), 2) + "]&[" + LEFT(STRTOMEMBER(@TarkastelujaksonLoppu).Name, 4) + "]" )}

} on rows

from [Hakemukset ja päätökset]

WHERE (
STRTOTUPLE(@KuukaudenLaskenta),
STRTOTUPLE(@HakemuksenTyyppi),
STRTOTUPLE(@ElakeratkaisunRatkaisu),
STRTOTUPLE(@ElakepaatoksenTyyppi)
)   ````

Solution

  • Still working on the following - I'm re-writing it to see if that helps to spot the problem:

    WITH
        MEMBER 
        [Measures].KeskimaarainenKasittelyaikaAutomatisoiduilleKokonaisprosesseille AS 
        (
            SUM(
              LINKMEMBER(
                 [Aika].[Päivämäärä].CURRENTMEMBER
               , [Aika - Päätöksen tekohetki].[Päivämäärä]
              )
              ,IIF(
                 [Measures].[Automaattisten prosessien m] = 1
               , [Measures].[Hakemusten Keskimääräinen Käsittelyaika]
               , 0  //<<<<< DO YOU DEFINITELY WANT 0?: NULL IS A LOT QUICKER IN MDX <<<<
              )
            )
        )
        MEMBER 
        [Measures].KeskimaarainenKasittelyaikaManuaalisilleKokonaisprosesseille AS 
        (
            SUM(
              LINKMEMBER(
                  [Aika].[Päivämäärä].CURRENTMEMBER
                , [Aika - Päätöksen tekohetki].[Päivämäärä]
              ),
              IIF(
                [Measures].[Automaattisten prosessien m] = 0 
                  OR ISNULL( [Measures].[Automaattisten prosessien m] )
              , [Measures].[Hakemusten Keskimääräinen Käsittelyaika]
              , 0  //<<<<< DO YOU DEFINITELY WANT 0?: NULL IS A LOT QUICKER IN MDX <<<<
              )
            )
        )
    
    SELECT 
        {
           [Measures].[Automaattinen hakemuksen tarkistus m]
          ,[Measures].[Automaattinen hakemuksen tarkistus r]
          ,[Measures].[Automaattinen ennakkoilmoitussanoma m]
          ,[Measures].[Automaattinen ennakkoilmoitussanoma r]
          ,[Measures].[Automaattinen ansiotietopyynto m]
          ,[Measures].[Automaattinen ansiotietopyynto r]
          ,[Measures].[Automaattisten lähetteiden m]
          ,[Measures].[Lähetteiden m]
          ,[Measures].[Automaattinen laakarin kasittely m]
          ,[Measures].[Automaattinen laakarin kasittely r]
          ,[Measures].[Automaattisten eläkeratkaisujen m]
          ,[Measures].[Ratkaistujen hakemusten m]
          ,[Measures].[Automaattisten päätösten m]
          ,[Measures].[Päätösten m]
          ,[Measures].[Automaattisten maksatus m]
          ,[Measures].[Automaattisten maksatus r]
          ,[Measures].[Muu tehtava noussut m]
          ,[Measures].[Saapuneiden hakemusten m]
          ,[Measures].[Automaattisten prosessien m]
          ,[Measures].[Automaatioaste m]
          ,[Measures].[Hakemusten määrä]
          ,[Measures].KeskimaarainenKasittelyaikaAutomatisoiduilleKokonaisprosesseille
          ,[Measures].KeskimaarainenKasittelyaikaManuaalisilleKokonaisprosesseille
        } ON COLUMNS,
        {
        EXISTS(
           [Hakemuslaji].[Hakemuslaji].[Alintaso].MEMBERS
         - {    //<<<< THINK I'LL USE EXCEPT HERE <<<<<<<<<<<<<<<<<<<<<<<<<<<<
             [Hakemuslaji].[Hakemuslaji].[Alintaso].[osa-aikaeläke], 
             [Hakemuslaji].[Hakemuslaji].[Alintaso].[varhennettu vanhuuseläke]
           }
          ,
           {
              [Hakemuslaji].[Hakemuslaji].[työkyvyttömyyseläke],
              [Hakemuslaji].[Hakemuslaji].[kuntoutustuki],
              [Hakemuslaji].[Hakemuslaji].[osatyökyvyttömyyseläke],
              [Hakemuslaji].[Hakemuslaji].[osakuntoutustuki]
            }
         ) 
    
       *{ STRTOMEMBER(@TarkastelujaksonAlku) : STRTOMEMBER(@TarkastelujaksonLoppu) } //<<< I'll use STRTOSET here <<<<<<<<<<<<<<<< 
      *
        {
          STRTOMEMBER(
            "[Aika].[Kuukausi].&[" 
            + LEFT(RIGHT(STRTOMEMBER(@TarkastelujaksonAlku).Name, 5), 2) 
            + "]&[" + LEFT(STRTOMEMBER(@TarkastelujaksonAlku).Name, 4) + "]" ) 
          :
          STRTOMEMBER(
            "[Aika].[Kuukausi].&[" 
           + LEFT(RIGHT(STRTOMEMBER(@TarkastelujaksonLoppu).Name, 5), 2) 
           + "]&[" 
           + LEFT(STRTOMEMBER(@TarkastelujaksonLoppu).Name, 4) + "]" )}
    
        } 
        ON ROWS
    FROM [Hakemukset ja päätökset]   
    WHERE (
        STRTOTUPLE(@KuukaudenLaskenta),
        STRTOTUPLE(@HakemuksenTyyppi),
        STRTOTUPLE(@ElakeratkaisunRatkaisu),
        STRTOTUPLE(@ElakepaatoksenTyyppi)
        );
    

    Main change I'll make is to switch your use of STRTOMEMBER to STRTOSET. Also whereever you are using the "strTo.." functions I'll add in the CONSTRAINED flag so you will get better error messages if the string does not resolve to valid MDX:

    WITH
        MEMBER 
        [Measures].KeskimaarainenKasittelyaikaAutomatisoiduilleKokonaisprosesseille AS 
        (
            SUM(
              LINKMEMBER(
                 [Aika].[Päivämäärä].CURRENTMEMBER
               , [Aika - Päätöksen tekohetki].[Päivämäärä]
              )
              ,IIF(
                 [Measures].[Automaattisten prosessien m] = 1
               , [Measures].[Hakemusten Keskimääräinen Käsittelyaika]
               , 0  //<<<<< DO YOU DEFINITELY WANT 0?: NULL IS A LOT QUICKER IN MDX <<<<
              )
            )
        )
        MEMBER 
        [Measures].KeskimaarainenKasittelyaikaManuaalisilleKokonaisprosesseille AS 
        (
            SUM(
              LINKMEMBER(
                  [Aika].[Päivämäärä].CURRENTMEMBER
                , [Aika - Päätöksen tekohetki].[Päivämäärä]
              ),
              IIF(
                [Measures].[Automaattisten prosessien m] = 0 
                  OR ISNULL( [Measures].[Automaattisten prosessien m] )
              , [Measures].[Hakemusten Keskimääräinen Käsittelyaika]
              , 0  //<<<<< DO YOU DEFINITELY WANT 0?: NULL IS A LOT QUICKER IN MDX <<<<
              )
            )
        )
    
    SELECT 
        {
           [Measures].[Automaattinen hakemuksen tarkistus m]
          ,[Measures].[Automaattinen hakemuksen tarkistus r]
          ,[Measures].[Automaattinen ennakkoilmoitussanoma m]
          ,[Measures].[Automaattinen ennakkoilmoitussanoma r]
          ,[Measures].[Automaattinen ansiotietopyynto m]
          ,[Measures].[Automaattinen ansiotietopyynto r]
          ,[Measures].[Automaattisten lähetteiden m]
          ,[Measures].[Lähetteiden m]
          ,[Measures].[Automaattinen laakarin kasittely m]
          ,[Measures].[Automaattinen laakarin kasittely r]
          ,[Measures].[Automaattisten eläkeratkaisujen m]
          ,[Measures].[Ratkaistujen hakemusten m]
          ,[Measures].[Automaattisten päätösten m]
          ,[Measures].[Päätösten m]
          ,[Measures].[Automaattisten maksatus m]
          ,[Measures].[Automaattisten maksatus r]
          ,[Measures].[Muu tehtava noussut m]
          ,[Measures].[Saapuneiden hakemusten m]
          ,[Measures].[Automaattisten prosessien m]
          ,[Measures].[Automaatioaste m]
          ,[Measures].[Hakemusten määrä]
          ,[Measures].KeskimaarainenKasittelyaikaAutomatisoiduilleKokonaisprosesseille
          ,[Measures].KeskimaarainenKasittelyaikaManuaalisilleKokonaisprosesseille
        } ON COLUMNS,
        EXISTS(
           EXCEPT( //<<<< ALTERNATIVE MORE READABLE <<<<<<<<<<<<<<<<<<<<<<<<<<<<
             {[Hakemuslaji].[Hakemuslaji].[Alintaso].MEMBERS}
            ,{    
               [Hakemuslaji].[Hakemuslaji].[Alintaso].[osa-aikaeläke], 
               [Hakemuslaji].[Hakemuslaji].[Alintaso].[varhennettu vanhuuseläke]
             }
          ,{
              [Hakemuslaji].[Hakemuslaji].[työkyvyttömyyseläke],
              [Hakemuslaji].[Hakemuslaji].[kuntoutustuki],
              [Hakemuslaji].[Hakemuslaji].[osatyökyvyttömyyseläke],
              [Hakemuslaji].[Hakemuslaji].[osakuntoutustuki]
            }
         ) 
    
       *{ STRTOSET( 
             @TarkastelujaksonAlku + ":" + @TarkastelujaksonLoppu
           , CONSTRAINED 
          ) } //<<< now using STRTOSET <<<<<<<<<<<<<<<< 
       *{
          STRTOSET(
            "[Aika].[Kuukausi].&[" 
            + LEFT(RIGHT(STRTOMEMBER(@TarkastelujaksonAlku).Name, 5), 2) 
            + "]&[" + LEFT(STRTOMEMBER(@TarkastelujaksonAlku).Name, 4) + "]" ) 
            + ":"
            + "[Aika].[Kuukausi].&[" 
            + LEFT(RIGHT(STRTOMEMBER(@TarkastelujaksonLoppu).Name, 5), 2) 
            + "]&[" 
            + LEFT(STRTOMEMBER(@TarkastelujaksonLoppu).Name, 4) + "]" 
           ,CONSTRAINED
           ) //<<< now using STRTOSET  <<<<<<<<<<<<<<<< 
         }
    
        ON ROWS
    FROM [Hakemukset ja päätökset]   
    WHERE 
       STRTOSET(
        @KuukaudenLaskenta + "," +
        @HakemuksenTyyppi + "," +
        @ElakeratkaisunRatkaisu + "," +
        @ElakepaatoksenTyyppi
        );