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

How do I get the location for a row in dbo.CUSTTRANS?

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

dbo.CUSTTRANS table 中有一列名为 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 的某些值,如上面的值,返回多行具有不同的描述。我的查询不正确吗?还是他们的数据不好?顺便说一句,我会问客户,但知道这件事的人要到下周才能找到。

我认为查询不正确。

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

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

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

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

对于引用仅包含业务单位维度的一组财务维度的 DefaultDimension 值,查询将仅 return 一个(正确的)值。但是对于引用具有多个维度的集合的 DefaultDimension 值,查询会将每个维度解释为业务单位维度,从而产生不正确的结果。

如果我之前的假设是正确的,即您的客户只想报告业务单位维度的值,则您需要向查询添加一个额外的过滤器。它会将 dbo.DefaultDimensionView.BackingEntityType 过滤为与 table dbo.DimAttributeOMBusinessUnit.

的 table id 相对应的值

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