我正在为使用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的某些值(如上面的值),将返回具有不同描述的多行。我的查询不正确吗?还是他们的数据不好?顺便说一句,我想问客户,但是知道这件事的人要等到下周才能到。
答案 0 :(得分:2)
我认为查询不正确。
表DefaultDimension
中的字段CustTrans
(以及其他字段)用于存储对一组财务维度及其值的引用(这是一个相当复杂的数据结构和逻辑,为什么我不做更详细的介绍,但是Implementing the Account and Financial Dimensions Framework (White paper)可以作为更多研究的起点)。
您的客户似乎将业务部门的财务维度解释为“地点”,并希望您报告该财务维度的价值。请注意,术语“位置”通常与Dynamics AX中的库存尺寸相关,而不与财务尺寸相关。
通过过滤T.DEFAULTDIMENSION = 5637168346
,您将选择所有CustTrans
条记录,它们共享一组完全相同的财务维度和值。
通过加入dbo.DimAttributeOMBusinessUnit
,该集合中的每个财务维度都被视为业务单位财务维度。
对于引用一组仅由业务部门维组成的一组财务维的DefaultDimension
值,查询将仅返回一个(正确)值。但是对于引用多个维度集合的DefaultDimension
值,查询会将每个维度解释为业务单位维度,这会产生错误的结果。
如果我先前的假设是正确的,即您的客户只想报告业务单位维的值,则需要向查询中添加一个附加过滤器。它将dbo.DefaultDimensionView.BackingEntityType
过滤为与表dbo.DimAttributeOMBusinessUnit
的表ID相对应的值。
我想补充一点,AX已经随BI一起提供了一个数据集市,并且包含多个现成的BI多维数据集,其中包括一个用于AR的BI多维数据集。 Management Reporter是另一个可用于报告财务数据和维度的解决方案。定制数据集市可能不是最合适的选择。