钻取 icCube 中的基础文本数据?
Drillthrough to underlying text data in icCube?
当详细信息包含文本字段时,如何在 icCube 中设置模型以允许深入到详细信息?
我们的想法是获取一个列表,其中列名包含文本字段(结合金额字段)。就像一个简单的 SQL 语句会给出。
我试过以下方法:
a) 添加了链接到行的技术维度(通过 rownumber)并为文本字段添加了 MIN 聚合。想在调用 DRILLTHROUGH MDX 语句时使用这些。 DRILLTHROUGH 函数有效,但不会为度量值提供彼此相邻的值。结果是这样的:
b) 为每个唯一行添加一个行号,并将行号加载为其中一个维度中的最低细节。为 "drillthrough" 列的这些文本和日期项添加了属性。接下来,添加计算度量以获得这些属性的 属性。钻取现在实际上是对最低细节的钻取。它有效,但这并不好,因为它炸毁了我的维度。
c) 尝试使用小部件数据源SQL,但它不适用于文本文件,也不适用于 MSAccess 文件(太慢)。
最好的解决方案应该适用于仪表板和任何 XMLA/REST API 界面。
附上这个例子
架构文件
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<schemaFactory revisionNumber="7">
<schemaDefinition name="drilltrhough-text" description="" group="Issues" loadOnStartup="false">
<activateIncrementalLoad>false</activateIncrementalLoad>
<useUnknownMembersInFacts>true</useUnknownMembersInFacts>
<autoCleanUpTableColumns>false</autoCleanUpTableColumns>
<useFactPartitioning>false</useFactPartitioning>
<callGarbageCollector>NONE</callGarbageCollector>
<backup>NONE</backup>
<nonEmptyCachePolicy>NONE</nonEmptyCachePolicy>
<nonEmptyCacheType>REGULAR</nonEmptyCacheType>
<nonEmptyCachePersistency>MEMORY</nonEmptyCachePersistency>
<storagePolicy>DEFAULT</storagePolicy>
<hierarchyUniqueNameStyle>IncludeDimensionName</hierarchyUniqueNameStyle>
<inMemoryDS name="data">
<memoryDataTable tableName="data" rowLimit="-1" id="d9429713-9be8-4c63-9b40-4a20388e7563">
<column name="dimension" tableType="STRING" type="STRING" selected="true" primaryKey="false"/>
<column name="amount" tableType="STRING" type="STRING" selected="true" primaryKey="false"/>
<column name="text" tableType="STRING" type="STRING" selected="true" primaryKey="false"/>
<addRowNumber>false</addRowNumber>
<stringDateConverter></stringDateConverter>
<trimStrings>true</trimStrings>
<columnSeparator>,</columnSeparator>
<commentMarker>#</commentMarker>
<dataAsString>dimension, amount, text
a, 10,some text
b, 20, some more text
c, ,text without an amount</dataAsString>
</memoryDataTable>
</inMemoryDS>
<multiLevelDimension dataTableId="d9429713-9be8-4c63-9b40-4a20388e7563" isTimeDimension="false" isDefaultTimeDimension="false" isIndexingByRange="false" id="86d118f0-71ba-4826-a6ac-343eac96fb05" name="Dimension">
<multiLevelHierarchy hasAllLevel="true" allLevelName="All-Level" allMemberName="All" name="Dimension" isDefault="true">
<level name="Dimension - L" nameUnique="false" nameUniqueInParent="false" keyUnique="false" ignoreNameCollision="false">
<nameCol name="dimension"/>
<orderType>BY_NAME</orderType>
<orderKind>ASC</orderKind>
</level>
</multiLevelHierarchy>
</multiLevelDimension>
<cube id="caa9c520-f953-4c77-9e72-76c8668170f7" name="Cube">
<defaultFacts measureGroupName="Facts" partitioningLevelName="" partitioningType="NONE" newGeneration="true" dataTableId="d9429713-9be8-4c63-9b40-4a20388e7563" aggregateDataSourceFacts="false" unresolvedRowsBehavior="ERROR">
<rowFactAggregationType>ADD_ROW</rowFactAggregationType>
<measure name="Amount" aggregationType="SUM">
<dataColumn name="amount"/>
</measure>
<measure name="Text" aggregationType="MIN">
<dataColumn name="text"/>
</measure>
<links dimensionId="86d118f0-71ba-4826-a6ac-343eac96fb05">
<viewLinks type="LAST_LEVEL">
<toColumns name="dimension"/>
</viewLinks>
</links>
</defaultFacts>
</cube>
</schemaDefinition>
</schemaFactory>
-mdx
drillthrough
select [Measures].members on 0
, [Dimension].[Dimension].[Dimension - L] on 1
from [cube]
return Name([Dimension])
- 结果
这与具有 STRING 类型的度量无关。
您正在执行 multi-cell 结果钻取(这是 icCube 中标准 MDX 的扩展)。在这种情况下,每个结果单元格的结果是 "organized",这意味着每个 [Measures] 都在其自己的类别中(您可以添加另一个 Amount 度量,您会看到相同的行为)。
相反,您应该执行 单个单元格 钻取:
drillthrough
select [Dimension].[Dimension].[Dimension -L].[a] on 0
from [cube]
结果应该是这样的:
您可以看到 [Measures].[Info] 位于同一行(与所有其他度量一样)。
希望对您有所帮助。
当详细信息包含文本字段时,如何在 icCube 中设置模型以允许深入到详细信息?
我们的想法是获取一个列表,其中列名包含文本字段(结合金额字段)。就像一个简单的 SQL 语句会给出。
我试过以下方法:
a) 添加了链接到行的技术维度(通过 rownumber)并为文本字段添加了 MIN 聚合。想在调用 DRILLTHROUGH MDX 语句时使用这些。 DRILLTHROUGH 函数有效,但不会为度量值提供彼此相邻的值。结果是这样的:
b) 为每个唯一行添加一个行号,并将行号加载为其中一个维度中的最低细节。为 "drillthrough" 列的这些文本和日期项添加了属性。接下来,添加计算度量以获得这些属性的 属性。钻取现在实际上是对最低细节的钻取。它有效,但这并不好,因为它炸毁了我的维度。
c) 尝试使用小部件数据源SQL,但它不适用于文本文件,也不适用于 MSAccess 文件(太慢)。
最好的解决方案应该适用于仪表板和任何 XMLA/REST API 界面。
附上这个例子
架构文件
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<schemaFactory revisionNumber="7">
<schemaDefinition name="drilltrhough-text" description="" group="Issues" loadOnStartup="false">
<activateIncrementalLoad>false</activateIncrementalLoad>
<useUnknownMembersInFacts>true</useUnknownMembersInFacts>
<autoCleanUpTableColumns>false</autoCleanUpTableColumns>
<useFactPartitioning>false</useFactPartitioning>
<callGarbageCollector>NONE</callGarbageCollector>
<backup>NONE</backup>
<nonEmptyCachePolicy>NONE</nonEmptyCachePolicy>
<nonEmptyCacheType>REGULAR</nonEmptyCacheType>
<nonEmptyCachePersistency>MEMORY</nonEmptyCachePersistency>
<storagePolicy>DEFAULT</storagePolicy>
<hierarchyUniqueNameStyle>IncludeDimensionName</hierarchyUniqueNameStyle>
<inMemoryDS name="data">
<memoryDataTable tableName="data" rowLimit="-1" id="d9429713-9be8-4c63-9b40-4a20388e7563">
<column name="dimension" tableType="STRING" type="STRING" selected="true" primaryKey="false"/>
<column name="amount" tableType="STRING" type="STRING" selected="true" primaryKey="false"/>
<column name="text" tableType="STRING" type="STRING" selected="true" primaryKey="false"/>
<addRowNumber>false</addRowNumber>
<stringDateConverter></stringDateConverter>
<trimStrings>true</trimStrings>
<columnSeparator>,</columnSeparator>
<commentMarker>#</commentMarker>
<dataAsString>dimension, amount, text
a, 10,some text
b, 20, some more text
c, ,text without an amount</dataAsString>
</memoryDataTable>
</inMemoryDS>
<multiLevelDimension dataTableId="d9429713-9be8-4c63-9b40-4a20388e7563" isTimeDimension="false" isDefaultTimeDimension="false" isIndexingByRange="false" id="86d118f0-71ba-4826-a6ac-343eac96fb05" name="Dimension">
<multiLevelHierarchy hasAllLevel="true" allLevelName="All-Level" allMemberName="All" name="Dimension" isDefault="true">
<level name="Dimension - L" nameUnique="false" nameUniqueInParent="false" keyUnique="false" ignoreNameCollision="false">
<nameCol name="dimension"/>
<orderType>BY_NAME</orderType>
<orderKind>ASC</orderKind>
</level>
</multiLevelHierarchy>
</multiLevelDimension>
<cube id="caa9c520-f953-4c77-9e72-76c8668170f7" name="Cube">
<defaultFacts measureGroupName="Facts" partitioningLevelName="" partitioningType="NONE" newGeneration="true" dataTableId="d9429713-9be8-4c63-9b40-4a20388e7563" aggregateDataSourceFacts="false" unresolvedRowsBehavior="ERROR">
<rowFactAggregationType>ADD_ROW</rowFactAggregationType>
<measure name="Amount" aggregationType="SUM">
<dataColumn name="amount"/>
</measure>
<measure name="Text" aggregationType="MIN">
<dataColumn name="text"/>
</measure>
<links dimensionId="86d118f0-71ba-4826-a6ac-343eac96fb05">
<viewLinks type="LAST_LEVEL">
<toColumns name="dimension"/>
</viewLinks>
</links>
</defaultFacts>
</cube>
</schemaDefinition>
</schemaFactory>
-mdx
drillthrough
select [Measures].members on 0
, [Dimension].[Dimension].[Dimension - L] on 1
from [cube]
return Name([Dimension])
- 结果
这与具有 STRING 类型的度量无关。
您正在执行 multi-cell 结果钻取(这是 icCube 中标准 MDX 的扩展)。在这种情况下,每个结果单元格的结果是 "organized",这意味着每个 [Measures] 都在其自己的类别中(您可以添加另一个 Amount 度量,您会看到相同的行为)。
相反,您应该执行 单个单元格 钻取:
drillthrough
select [Dimension].[Dimension].[Dimension -L].[a] on 0
from [cube]
结果应该是这样的:
您可以看到 [Measures].[Info] 位于同一行(与所有其他度量一样)。
希望对您有所帮助。