mdx-虚拟多维数据集未显示所有结果

mdx-虚拟多维数据集未显示所有结果,mdx,mondrian,Mdx,Mondrian,我有两个多维数据集SalesCube和StockCube,它们有两个共享维度:店铺名称、商品Id。每个多维数据集都有自己的特定维度:SalesCube有SalesDim,StockCube有StockDim。此外,每个多维数据集都有自己的度量值:SalesCube有销售价值,StockCube有库存价值。我创建了一个虚拟多维数据集,其中包含所有维度2共享维度和2个特定维度以及这两个度量值。问题是,如果我使用特定维度,结果将只包含来自具有该特定维度的多维数据集的度量值的数据。第二个度量值为空。如果

我有两个多维数据集SalesCube和StockCube,它们有两个共享维度:店铺名称、商品Id。每个多维数据集都有自己的特定维度:SalesCube有SalesDim,StockCube有StockDim。此外,每个多维数据集都有自己的度量值:SalesCube有销售价值,StockCube有库存价值。我创建了一个虚拟多维数据集,其中包含所有维度2共享维度和2个特定维度以及这两个度量值。问题是,如果我使用特定维度,结果将只包含来自具有该特定维度的多维数据集的度量值的数据。第二个度量值为空。如果我只使用共享维度,报告将为这两个度量带来结果。 我错过了什么

实际上,对于不来自同一父多维数据集的维度下的度量值,虚拟值为空

我发现了类似的东西,但没有答案:

对虚拟多维数据集中的所有多维数据集未共享的多维数据集特定维度使用ignoreUnrelatedDimensions参数。 请阅读中有关此参数的详细信息


你所描述的行为是完全正常和预期的。如果您要求OLAP按文章Id维度对[Measures].[Sales value]进行细分,则OLAP不知道如何计算[Measures].[Sales value]。这毫无意义。对于每个商品Id值,您无法知道要从Sales表中获取哪些事实记录/行

如果您想分别分析这两个度量值,请使用两个单独的多维数据集,或者接受这样一个事实:当您按非共享维度进行分段时,您将只得到一个度量值


如果您想基于两个不同立方体中的两个来计算另一个度量值,则只能使用它们之间共享的公共维度。如果你仔细想想,其他的计算就没有意义了。

好的,然后在Schema元素下将维度Shop_name和Article Id定义为global,并按DimensionUsage将它们添加到多维数据集。这是我的第一个想法。但是我从哪个表定义它们呢?每个表都可以在两个多维数据集/表中找到。然后在DWH中创建两个新表-dim_article_id、dim_shopshop_id、shop_name。填写并更新库存和销售表中的文章和店铺参考,以指向新的维度表。然后您将能够创建一个全局维度,并以前面提到的方式使用它。
<Schema name="Shop_Sales_and_Stock">
  <Dimension name="SalesDim">
    <Hierarchy hasAll="true">
      <Table name="Sales" primaryKey="Article_Id"/>
      <Level name="SalesDim" uniqueMembers="false" column="SalesDim" type="String">
      </Level>
    </Hierarchy>
  </Dimension>
  <Dimension name="StockDim">
    <Hierarchy hasAll="true">
      <Table name="Stocks" primaryKey="Article_Id"/>
      <Level name="StockDim" uniqueMembers="false" column="StockDim" type="String">
      </Level>
    </Hierarchy>
  </Dimension>

<Cube name="SalesCube">
  <Table name="Sales"/>
  <Dimension name="Shop_name">
    <Hierarchy visible="true" hasAll="true">
      <Table name = "Sales"/>
    <Level name="Shop name" uniqueMembers="false" column="Shop_name" type="String">
    </Level>
      </Hierarchy>
  </Dimension>
  <Dimension name="Article Id">
    <Hierarchy visible="true" hasAll="true">
      <Table name = "Sales"/>
    <Level name="Article Id" uniqueMembers="false" column="Article_Id" type="String">
    </Level>
      </Hierarchy>
  </Dimension>
    <DimensionUsage name="SalesDim" source="SalesDim" foreignKey="Article_Id"/>
    <Measure name="Sales value" column="Sales value" aggregator="sum" formatString="&#x23;"/>
</Cube>

<Cube name="StockCube">
  <Table name="Stocks"/>
  <Dimension name="Shop_name">
    <Hierarchy visible="true" hasAll="true">
      <Table name = "Stocks"/>
    <Level name="Shop name" uniqueMembers="false" column="Shop_name" type="String">
    </Level>
      </Hierarchy>
  </Dimension>
  <Dimension name="Article Id">
    <Hierarchy visible="true" hasAll="true">
      <Table name = "Stocks"/>
    <Level name="Article Id" uniqueMembers="false" column="Article_Id" type="String">
    </Level>
      </Hierarchy>
  </Dimension>
    <DimensionUsage name="StockDim" source="StockDim" foreignKey="Article_Id"/>
    <Measure name="Stocks value" column="Stocks value" aggregator="sum" formatString="&#x23;"/>
</Cube>

<VirtualCube name="Shop_Sales_and_Stock">
    <CubeUsages>
        <CubeUsage cubeName="SalesCube"/>
        <CubeUsage cubeName="StockCube"/>
    </CubeUsages>
    <VirtualCubeDimension name="Shop name"/>
    <VirtualCubeDimension name="Article Id"/>
    <VirtualCubeMeasure cubeName="SalesCube" name="[Measures].[Sales value]"/>
    <VirtualCubeMeasure cubeName="StockCube" name="[Measures].[Stocks value]"/>
</VirtualCube>
</Schema>
<VirtualCube name="Shop_Sales_and_Stock">
  <CubeUsages>
    <CubeUsage cubeName="SalesCube" ignoreUnrelatedDimensions="true"/>
    <CubeUsage cubeName="StockCube" ignoreUnrelatedDimensions="true"/>
  </CubeUsages>
  <VirtualCubeDimension name="Shop name"/>
  <VirtualCubeDimension name="Article Id"/>
  <VirtualCubeMeasure cubeName="SalesCube" name="[Measures].[Sales value]"/>
<VirtualCubeMeasure cubeName="StockCube" name="[Measures].[Stocks value]"/>