对一个非常菜鸟的问题表示歉意,但我正在努力想出正确的措施。我有一个总账表 43,000 行(FCT_GL_Details),其中包含我想要合并到跟踪余额(FCT_GL_TB)中的交易,按“yyyy”格式的“分支”、“账户”、“子账户”、“finYear”分组、“mm”格式的 finMonth、“PeriodID”( FinYearFinMonth 为“yyyymm”,然后对 NettAmt 求和(我将其称为 NettAmt)。我创建了一个引用表并按上述分组。我现在需要的是两个期初余额,一个是截至目前的余额 (LTD_Opening ),以及基于同一财政年度的年初至今 (YTD_Opening)。
Excel 等效项是:
LTD_Opening = sumifs([NettAmt],[Periodid],"<"&[@[PeriodID]],[Branch],[@[Branch]],[Account],[@[Account]],[Subaccount],[@[Subaccount]])
and YTD would include ... ",[FinYear],[@[FinYear]])
我正在努力解决过滤如何从 Excel 约定切换为行值添加前缀“@”的问题。
非常感谢您对此的帮助。
大卫
虽然我对您的期初余额考虑有些困惑,但您可以通过下面给出的几个自定义列和措施来实现所需的输出-
首先让我们创建一个日期自定义列,使用 FinYear 和 FinMonth 中的值检查所有月份的日期,如下所示 -
first_date_of_month = DATE(your_table_name[finyear],your_table_name[finmonth],1)
现在再创建下面 2 个自定义列,从中我们可以检查该行属于相应的 Branch 和 FinYear 的 Opening date。
is_initial_opening_of_branch =
var current_row_branch = your_table_name[branch]
var current_row_first_date_of_month = your_table_name[first_date_of_month]
var check_first_balance_of_branch =
CALCULATE(
COUNTROWS(your_table_name),
FILTER(
ALL(your_table_name),
your_table_name[branch] = current_row_branch
&& your_table_name[first_date_of_month] <= current_row_first_date_of_month
)
)
return IF(check_first_balance_of_branch = 1,1,0)
is_initial_opening_of_finyear =
var current_row_branch = your_table_name[branch]
var current_row_finyear = your_table_name[finyear]
var current_row_first_date_of_month = your_table_name[first_date_of_month]
var check_first_balance_of_branch_finyear =
CALCULATE(
COUNTROWS(your_table_name),
FILTER(
ALL(your_table_name),
your_table_name[branch] = current_row_branch
&& your_table_name[finyear] = current_row_finyear
&& your_table_name[first_date_of_month] <= current_row_first_date_of_month
)
)
return IF(check_first_balance_of_branch_finyear = 1,1,0)
现在让我们创建您所需的2个措施,如下所示-
ltd_opening =
var current_row_branch = MIN(your_table_name[branch])
var current_row_first_date_of_month = MIN(your_table_name[first_date_of_month])
return
CALCULATE(
sum(your_table_name[nett]),
FILTER(
ALL(your_table_name),
your_table_name[branch] = current_row_branch
&& your_table_name[first_date_of_month] <= current_row_first_date_of_month
&& your_table_name[is_initial_opening_of_branch] <> 1
)
) + 0
ytd_opening =
var current_row_branch = MIN(your_table_name[branch])
var current_row_finyear = MIN(your_table_name[finyear])
var current_row_first_date_of_month = MIN(your_table_name[first_date_of_month])
return
CALCULATE(
sum(your_table_name[nett]),
FILTER(
ALL(your_table_name),
your_table_name[branch] = current_row_branch
&& your_table_name[finyear] = current_row_finyear
&& your_table_name[first_date_of_month] <= current_row_first_date_of_month
&& your_table_name[is_initial_opening_of_finyear] <> 1
)
) + 0
这是最终输出-