【问题标题】:Drillthrough to underlying text data in icCube?钻取到 icCube 中的基础文本数据?
【发布时间】:2019-06-26 12:29:16
【问题描述】:

当详细信息包含文本字段时,如何在 icCube 中设置模型以允许深入了解详细信息?

我们的想法是获取一个列表,其中列名包含文本字段(与金额字段相结合)。就像一个简单的 SQL 语句一样。

我尝试了以下方法:

  • a) 添加了一个与行链接的技术维度(通过行号),并为文本字段添加了 MIN 聚合。在调用 DRILLTHROUGH MDX 语句时使用它们的想法。 DRILLTHROUGH 函数有效,但不会为度量提供彼此相邻的值。结果是这样的:

  • b) 为每个唯一行添加一个行号,并将行号加载为其中一个维度中的最低详细信息。为“钻取”列添加了这些文本和日期项目的属性。接下来,添加计算度量以获取这些属性的属性。现在,钻取实际上是对最低细节的钻取。它有效,但这并不好,因为它会炸毁我的维度。

  • 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])
  • 结果

【问题讨论】:

  • 您是否尝试使用字符串添加度量?
  • 是的,这是选项 a)。
  • 选项 a) 正在添加维度
  • 当我删除 rownumber 维度时,我得到与 a) 相同的结果
  • 我迷路了,你需要更好地解释一下,或者添加一个我们可以玩的简单架构

标签: iccube


【解决方案1】:

这与 STRING 类型的度量无关。

您正在执行多单元结果钻取(这是 icCube 中标准 MDX 的扩展)。在这种情况下,每个结果单元格的结果都是“有组织的”,这意味着每个 [Measures] 都属于自己的类别(您可以添加另一个 Amount 度量,您会看到相同的行为)。

相反,您应该执行单个单元格钻取:

drillthrough 
  select [Dimension].[Dimension].[Dimension -L].[a] on 0     
  from [cube]

结果应该是这样的:

您可以看到 [Measures].[Info] 位于同一行(与所有其他措施一样)。

希望对您有所帮助。

【讨论】:

  • 谢谢。生活可以如此简单和优雅。为什么我错过了?
猜你喜欢
  • 1970-01-01
  • 2015-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多