我有这样的疑问:
SELECT
{
[Measures].[ContractValue]
,[Measures].[ContractVolumeMWh]
,[Measures].[ContractVolumeMW]
}
DIMENSION PROPERTIES
PARENT_UNIQUE_NAME
,HIERARCHY_UNIQUE_NAME
ON COLUMNS
,NON EMPTY
Hierarchize
(
DrillDownMember
(
DrillDownMember
(
DrillDownMember
(
DrillDownMember
(
CrossJoin
(
{
[HalfHourEnding].[Year].[All]
,[HalfHourEnding].[Year].[Year].ALLMEMBERS
}
,{
(
[HalfHourEnding].[Quarter].[All]
,[HalfHourEnding].[Month].[All]
,[Book].[Book].[All]
,[InstrumentType].[InstrumentType].[All]
)
}
)
,[HalfHourEnding].[Year].[Year].ALLMEMBERS AS year
,[HalfHourEnding].[Quarter]
)
,[HalfHourEnding].[Quarter].[Quarter].ALLMEMBERS
,[HalfHourEnding].[Month]
)
,[HalfHourEnding].[Month].[Month].ALLMEMBERS
,[Book].[Book]
)
,[Book].[Book].[Book].ALLMEMBERS
,[InstrumentType].[InstrumentType]
)
)
DIMENSION PROPERTIES
PARENT_UNIQUE_NAME
,HIERARCHY_UNIQUE_NAME
ON ROWS
FROM [ContractDetail]
WHERE
(
[AsAt].[As at Business Date].&[2016-06-04T00:00:00]
,[Region].[Region].&[TTT]
)
CELL PROPERTIES
VALUE
,FORMAT_STRING
,LANGUAGE
,BACK_COLOR
,FORE_COLOR
,FONT_FLAGS;当我在Microsoft Analysis Server中运行它时,我会得到:

这是正确的输出,但是我没有得到前五列的标题。这就产生了问题,因为当我想要使用openquery从tsql中选择这些数据时,我无法选择这些列中的任何一列。
这是来自tsql的查询,它为我提供了正确的顺序,但我无法获得年度季度月度账簿instrumentType。
DECLARE @ContractsTable as TABLE (
Year varchar(100),
Quarter varchar(100),
Month varchar(100),
Book varchar(100),
InstrumentType varchar(100),
Value decimal(16,2),
Volume_MWH decimal(16,2),
Volume_MW decimal(16,2)
)
Declare @ContractsQuery as nvarchar(max)
SET @ContractsQuery =
'
SELECT
"[Measures].[ContractValue]" as value,
"[Measures].[ContractVolumeMWh]" as MWH,
"[Measures].[ContractVolumeMW]" as MW
from OpenQuery(CONTRACT_IMDB,
''SELECT
{
[Measures].[ContractValue]
,[Measures].[ContractVolumeMWh]
,[Measures].[ContractVolumeMW]
}
DIMENSION PROPERTIES
PARENT_UNIQUE_NAME
,HIERARCHY_UNIQUE_NAME
ON COLUMNS
,NON EMPTY
Hierarchize
(
DrillDownMember
(
DrillDownMember
(
DrillDownMember
(
DrillDownMember
(
CrossJoin
(
{
[HalfHourEnding].[Year].[All]
,[HalfHourEnding].[Year].[Year].ALLMEMBERS
}
,{
(
[HalfHourEnding].[Quarter].[All]
,[HalfHourEnding].[Month].[All]
,[Book].[Book].[All]
,[InstrumentType].[InstrumentType].[All]
)
}
)
,[HalfHourEnding].[Year].[Year].ALLMEMBERS AS year
,[HalfHourEnding].[Quarter]
)
,[HalfHourEnding].[Quarter].[Quarter].ALLMEMBERS
,[HalfHourEnding].[Month]
)
,[HalfHourEnding].[Month].[Month].ALLMEMBERS
,[Book].[Book]
)
,[Book].[Book].[Book].ALLMEMBERS
,[InstrumentType].[InstrumentType]
)
)
DIMENSION PROPERTIES
PARENT_UNIQUE_NAME
,HIERARCHY_UNIQUE_NAME
ON ROWS
FROM [ContractDetail]
WHERE
(
[AsAt].[As at Business Date].&[2016-06-04T00:00:00]
,[Region].[Region].&[TTT]
)
CELL PROPERTIES
VALUE
,FORMAT_STRING
,LANGUAGE
,BACK_COLOR
,FORE_COLOR
,FONT_FLAGS; ''
)
'
INSERT INTO @ContractsTable(Value,Volume_MWH,Volume_MW)
EXEC sp_executesql @ContractsQuery
Select * From @ContractsTable 输出为

现在,我只想从分析服务中提取输出,但不能选择所有列。我不知道如何定义这些在维度中向下钻取的列。
发布于 2016-06-08 08:19:26
您可以像这样使用微软的OPENQUERY:
SELECT * FROM OPENQUERY(olap_server,
'SELECT [unit sales] FROM myCubeName')其中olap_server是链接的olap服务器的名称
或
您可以使用此处提供的执行olap函数:https://olapextensions.codeplex.com/
最初我们使用openquery,但现在我们使用olapextensions,因为它看起来更简单、更高效。
编辑
最初运行以下命令以查找所有可用列的标题:
Declare @ContractsQuery as nvarchar(max)
SET @ContractsQuery =
'
SELECT
*
from OpenQuery(CONTRACT_IMDB,
''SELECT
{
[Measures].[ContractValue]
,[Measures].[ContractVolumeMWh]
,[Measures].[ContractVolumeMW]
}
DIMENSION PROPERTIES
PARENT_UNIQUE_NAME
,HIERARCHY_UNIQUE_NAME
ON COLUMNS
,NON EMPTY
Hierarchize
(
DrillDownMember
(
DrillDownMember
(
DrillDownMem
...
...然后将*替换为特定的名称。
https://stackoverflow.com/questions/37651304
复制相似问题