【发布时间】:2019-09-18 08:54:30
【问题描述】:
我正在尝试使用 OPENQUERY 和 SQL 中的 MDX 字符串从 SSAS 多维数据集中检索一些简单数据。
无法从 OLE DB 提供程序“MSOLAP”获取该行的数据 链接服务器“OLAP_LIVE”。转换失败,因为数据值 溢出了提供者使用的数据类型。
查询很简单:
select
StockCode = "[Product].[Stock Code].[Stock Code].[MEMBER_CAPTION]",
LiveReturnPercent = "[Measures].[Live Return %]"
from openquery(
My_OLAP_SERVER,
'select
non empty
{
[Measures].[Live Return %]
}
on columns,
non empty
{
[Product].[Stock Code].allmembers
}
on rows
from
[Document DW]')
在数据“在”到达 SQL 之前传输数据时发生错误 - 即,我无法通过将第三行更改为以下内容来解决它:
LiveReturnPercent = left("[Measures].[Live Return %]", 1)
因为它仍然返回相同的错误。我不知道如何在 MDX 端格式化/修剪查询,以便将度量作为较短的字符串返回。
如果我在 SSAS 中本地运行 MDX,它运行良好。
SSAS 似乎在内部为[Measures].[Live Return %] 字符串定义了一个长度,然后尝试传回一个更长的字符串。
我该如何解决这个问题?
请注意,[Live Return %] 返回一个像 12.34632456 这样的长浮点值,但我不需要那种级别的准确度,因此将其修剪为 12.34 的答案就足够了。
我也无法修改多维数据集本身的度量定义 - 不是我的多维数据集;在其他地方广泛使用,等等。
编辑:我也试过了:
...
LiveReturnPercent = "[Measures].[Live Return % Friendly]"
from openquery(
My_OLAP_SERVER,
'with member [Measures].[Live Return % Friendly] as
[Measures].[Live Return %],
FORMAT_STRING = "Percent"
select
non empty
{
[Measures].[Live Return % Friendly]
}
on columns,
...
但这也会导致同样的错误——FORMAT_STRINGs 也一样,比如"#.##%"
【问题讨论】:
标签: sql-server ssas mdx openquery