mdx - 问题出在哪里:函数需要 2 参数的元组表达式。使用了元组集表达式。错误
问题描述
如果我在参数@Hakemuksen tyyppi (Unknown + some other value) 中设置值,我试图在报告的参数中设置两个值,它会给出错误 -
报告处理过程中发生错误。(rsProcessingAborted) 数据集“Table_1”的查询执行失败。(rsErrorExecutingCommand) 该函数需要一个用于 2 参数的元组表达式。使用了元组集表达式。
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)
) ````
解决方案
仍在研究以下内容 - 我正在重新编写它以查看是否有助于发现问题:
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)
);
我要做的主要更改是将您的使用切换STRTOMEMBER
为STRTOSET
. 此外,无论您在何处使用“strTo..”函数,我都会在 CONSTRAINED 标志中添加,以便在字符串无法解析为有效时获得更好的错误消息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
);