处理 MDX OPENQUERY,开头的标识符太长。最大长度为 128
Handling MDX OPENQUERY, The identifier that starts with is too long. Maximum length is 128
我在使用 openquery 时遇到问题。我想 select 带有它的名称的列,但名称太长,因为有很多级别
SELECT
A."[Dimension].[NAMEOFLEVEL1].[NAMEOFLEVEL2].[NAMEOFLEVEL3].[NAMEOFLEVEL4].[NAMEOFLEVEL5].[NAMEOFLEVEL6]" AS Acc2
FROM OPENQUERY(CUBEX,
'SELECT
({
[Dimension].[NAMEOFLEVEL1].[NAMEOFLEVEL2].[NAMEOFLEVEL3].[NAMEOFLEVEL4].[NAMEOFLEVEL5].[NAMEOFLEVEL6]
}) DIMENSION PROPERTIES MEMBER_KEY
ON COLUMNS,
NON EMPTY (
[TIME].[MONTH]
) DIMENSION PROPERTIES MEMBER_KEY
ON ROWS
FROM [MyTable]
') A
错误如下:
以“[Dimension].[NAMEOFLEVEL1].[NAMEOFLEVEL2].[NAMEOFLEVEL3].[NAMEOFLEVEL4].[NAMEOFLEVEL5].[NAMEOFLEVEL6]”开头的标识符太长。最大长度为 128。
嗯,一个可能的解决方法是从使用 User Hierarchy
切换到等效的 Attribute Hierarchy
,后者的标识符要小得多。
--USER HIERARCHY EXAMPLE
SELECT
"[Date].[Date - Calendar Month].[Calendar Month].[MEMBER_CAPTION]"
FROM OPENQUERY(linkedName,
'
SELECT
{[Measures].[xxx]} ON 0
,NON EMPTY
[Date].[Date - Calendar Month].[Calendar Month].MEMBERS ON 1
FROM [OurCube];')
--ATTRIBUTE HIERARCHY EXAMPLE - NOT MUCH SMALLER IN OUR CUBE
SELECT
"[Date].[Calendar Month].[Calendar Month].[MEMBER_CAPTION]"
FROM OPENQUERY(linkedName,
'
SELECT
{[Measures].[xxx]} ON 0
,NON EMPTY
[Calendar Month].[Calendar Month].MEMBERS ON 1
FROM [OurCube];')
也许你的缩短为:
SELECT
A."[Dimension].[NAMEOFLEVEL6].[NAMEOFLEVEL6]" AS Acc2
FROM OPENQUERY(CUBEX,
'SELECT
({
[Dimension].[NAMEOFLEVEL6].[NAMEOFLEVEL6]
}) DIMENSION PROPERTIES MEMBER_KEY
ON COLUMNS,
NON EMPTY (
[TIME].[MONTH]
) DIMENSION PROPERTIES MEMBER_KEY
ON ROWS
FROM [MyTable]
') A
这不是 OPENQUERY
的限制。它是 SQL column name 的限制 - 实际上是 128 个字符。
不过,您的情况更简单 - 无需列出所有层次结构以在输出中包含它们的名称
SELECT
A."[Dimension].[NAMEOFLEVEL1].[MEMBER_CAPTION]" as Level1,
A."[Dimension].[NAMEOFLEVEL2].[MEMBER_CAPTION]" as Level2
...
FROM OPENQUERY(CUBEX,
'SELECT
({
[Dimension].[NAMEOFLEVEL6].members
}) DIMENSION PROPERTIES MEMBER_KEY
ON COLUMNS,
NON EMPTY (
[TIME].[MONTH]
) DIMENSION PROPERTIES MEMBER_KEY
ON ROWS
FROM [MyTable]
') A
如果您在 MDX 中遇到非常长的名称(假设 Dimension 全名 + Member_CAPTION 用作列名),则将您的关卡包装在名称较短的集合中。
SELECT
A."[Measures].[allLevels].[MEMBER_CAPTION]" AS Acc2
FROM OPENQUERY(CUBEX,
'with member allLevels as
(
[Dimension].[NAMEOFLEVEL1].[NAMEOFLEVEL2].[NAMEOFLEVEL3].[NAMEOFLEVEL4].[NAMEOFLEVEL5].[NAMEOFLEVEL6].members
)
SELECT
({
[Measures].[allLevels]
}) DIMENSION PROPERTIES MEMBER_KEY
ON COLUMNS,
NON EMPTY (
[TIME].[MONTH]
) DIMENSION PROPERTIES MEMBER_KEY
ON ROWS
FROM [MyTable]
') A
我在使用 openquery 时遇到问题。我想 select 带有它的名称的列,但名称太长,因为有很多级别
SELECT
A."[Dimension].[NAMEOFLEVEL1].[NAMEOFLEVEL2].[NAMEOFLEVEL3].[NAMEOFLEVEL4].[NAMEOFLEVEL5].[NAMEOFLEVEL6]" AS Acc2
FROM OPENQUERY(CUBEX,
'SELECT
({
[Dimension].[NAMEOFLEVEL1].[NAMEOFLEVEL2].[NAMEOFLEVEL3].[NAMEOFLEVEL4].[NAMEOFLEVEL5].[NAMEOFLEVEL6]
}) DIMENSION PROPERTIES MEMBER_KEY
ON COLUMNS,
NON EMPTY (
[TIME].[MONTH]
) DIMENSION PROPERTIES MEMBER_KEY
ON ROWS
FROM [MyTable]
') A
错误如下:
以“[Dimension].[NAMEOFLEVEL1].[NAMEOFLEVEL2].[NAMEOFLEVEL3].[NAMEOFLEVEL4].[NAMEOFLEVEL5].[NAMEOFLEVEL6]”开头的标识符太长。最大长度为 128。
嗯,一个可能的解决方法是从使用 User Hierarchy
切换到等效的 Attribute Hierarchy
,后者的标识符要小得多。
--USER HIERARCHY EXAMPLE
SELECT
"[Date].[Date - Calendar Month].[Calendar Month].[MEMBER_CAPTION]"
FROM OPENQUERY(linkedName,
'
SELECT
{[Measures].[xxx]} ON 0
,NON EMPTY
[Date].[Date - Calendar Month].[Calendar Month].MEMBERS ON 1
FROM [OurCube];')
--ATTRIBUTE HIERARCHY EXAMPLE - NOT MUCH SMALLER IN OUR CUBE
SELECT
"[Date].[Calendar Month].[Calendar Month].[MEMBER_CAPTION]"
FROM OPENQUERY(linkedName,
'
SELECT
{[Measures].[xxx]} ON 0
,NON EMPTY
[Calendar Month].[Calendar Month].MEMBERS ON 1
FROM [OurCube];')
也许你的缩短为:
SELECT
A."[Dimension].[NAMEOFLEVEL6].[NAMEOFLEVEL6]" AS Acc2
FROM OPENQUERY(CUBEX,
'SELECT
({
[Dimension].[NAMEOFLEVEL6].[NAMEOFLEVEL6]
}) DIMENSION PROPERTIES MEMBER_KEY
ON COLUMNS,
NON EMPTY (
[TIME].[MONTH]
) DIMENSION PROPERTIES MEMBER_KEY
ON ROWS
FROM [MyTable]
') A
这不是 OPENQUERY
的限制。它是 SQL column name 的限制 - 实际上是 128 个字符。
不过,您的情况更简单 - 无需列出所有层次结构以在输出中包含它们的名称
SELECT
A."[Dimension].[NAMEOFLEVEL1].[MEMBER_CAPTION]" as Level1,
A."[Dimension].[NAMEOFLEVEL2].[MEMBER_CAPTION]" as Level2
...
FROM OPENQUERY(CUBEX,
'SELECT
({
[Dimension].[NAMEOFLEVEL6].members
}) DIMENSION PROPERTIES MEMBER_KEY
ON COLUMNS,
NON EMPTY (
[TIME].[MONTH]
) DIMENSION PROPERTIES MEMBER_KEY
ON ROWS
FROM [MyTable]
') A
如果您在 MDX 中遇到非常长的名称(假设 Dimension 全名 + Member_CAPTION 用作列名),则将您的关卡包装在名称较短的集合中。
SELECT
A."[Measures].[allLevels].[MEMBER_CAPTION]" AS Acc2
FROM OPENQUERY(CUBEX,
'with member allLevels as
(
[Dimension].[NAMEOFLEVEL1].[NAMEOFLEVEL2].[NAMEOFLEVEL3].[NAMEOFLEVEL4].[NAMEOFLEVEL5].[NAMEOFLEVEL6].members
)
SELECT
({
[Measures].[allLevels]
}) DIMENSION PROPERTIES MEMBER_KEY
ON COLUMNS,
NON EMPTY (
[TIME].[MONTH]
) DIMENSION PROPERTIES MEMBER_KEY
ON ROWS
FROM [MyTable]
') A