Axapta 如何在dbo.CUSTTRANS中获取行的位置?

Axapta 如何在dbo.CUSTTRANS中获取行的位置?,axapta,microsoft-dynamics,dynamics-ax-2012,dynamics-ax-2009,Axapta,Microsoft Dynamics,Dynamics Ax 2012,Dynamics Ax 2009,我正在为使用Dynamics AX(2012)的客户端构建一个小型AR数据集市。来自集市的数据将输入Power BI报告。我对AX几乎一无所知 dbo.CUSTTRANS表中有一列名为DEFAULTDIMENSION。客户告诉我,该值可用于使用以下查询检索事务行的位置描述: SELECT T.DEFAULTDIMENSION ,T3.Name AS Location FROM dbo.CUSTTRANS T INNER JOIN dbo.DEFAULTDIMENSION

我正在为使用Dynamics AX(2012)的客户端构建一个小型AR数据集市。来自集市的数据将输入Power BI报告。我对AX几乎一无所知

dbo.CUSTTRANS表中有一列名为DEFAULTDIMENSION。客户告诉我,该值可用于使用以下查询检索事务行的位置描述:

SELECT 
    T.DEFAULTDIMENSION
    ,T3.Name AS Location
FROM dbo.CUSTTRANS T
    INNER JOIN dbo.DEFAULTDIMENSIONVIEW T2 ON T2.DEFAULTDIMENSION = T.DEFAULTDIMENSION
    INNER JOIN dbo.DIMATTRIBUTEOMBUSINESSUNIT T3 ON T3.RECID = T2.ENTITYINSTANCE
WHERE T.DEFAULTDIMENSION = 5637168346

但是,对于DEFAULTDIMENSION的某些值,如上面的值,返回多个具有不同描述的行。我的问题不对吗?还是他们的数据不好?顺便说一句,我会问客户,但知道这一点的人要到下周才能找到。

我认为这个查询是不正确的

CustTrans
中的字段
DefaultDimension
(以及其他字段)用于存储对一组财务维度及其值的引用(这是一个相当复杂的数据结构和逻辑,这就是为什么我不详细介绍,但可以作为更多研究的起点)

似乎您的客户将业务单元财务维度解释为“位置”,并希望您报告该财务维度的值。请注意,术语“位置”通常与Dynamics AX中的库存维度相关联,而不是与财务维度相关联

通过筛选
T.DEFAULTDIMENSION=5637168346
,您将选择共享完全相同的财务维度和值集的所有
CustTrans
记录

通过加入
dbo.dimAttributeombusinesUnit
,该集合中的每个财务维度都被视为业务单元财务维度

对于引用一组仅由业务单元维度组成的财务维度的
DefaultDimension
值,查询将只返回一个(正确的)值。但是对于引用具有多个维度的集合的
DefaultDimension
值,查询将每个维度解释为业务单元维度,这会产生不正确的结果

如果我先前的假设是正确的,即您的客户机只希望报告业务单元维度的值,那么您需要向查询中添加一个额外的过滤器。它会将
dbo.DefaultDimensionView.backingTityType
过滤为一个值,该值将与table
dbo.dimAttributeombusinesUnit
的表id相对应


我想补充一点,AX已经提供了一个用于BI目的的数据集市,并包含了几个现成的BI多维数据集,包括一个用于AR的BI多维数据集。Management Reporter是另一个可用于报告财务数据和维度的解决方案。定制的数据集市可能不是这里的最佳选择。

非常感谢,我将在明天(周一)上午深入探讨。关于建立一个数据集市,我所构建的只是一个概念证明,这可能是一个全面数据仓库的基础,它将保存来自许多系统的数据,而不仅仅是AX。