小编iiv*_*vel的帖子

DAX/PowerPivot查询功能可在一段时间内传播聚合值

我正在尝试计算DAX表达式[对于Excel 2010中的MS PowerPivot],以便在应用的范围内均匀分配值的总和,并在给定的时间跨度/周期内对其进行重新求和.在SQL服务器中交叉应用是微不足道的,尽管每次尝试都会导致相同的错误结果.

我已将MS Project的输出保存为Excel并使用PowerQuery导入/转换,因此开始和结束/结束日期是正确的日期,{X} h和{Y} d是整数,以及日历之间的持续时间它们已经为模型计算/格式化.我还创建了一个日期表,其中包含从第一个日期到最后一个日期的连续日期,以及一个年份表,其中包含我想要汇总的4位数年份的字符串表示.

模型看起来像这样:

PowerPivot模型

我已经在ResourceQuery,TaskQuery和AssignmentQuery表上创建了计算列(所有这些都直接来自MS Project输出),以及ServiceAreaQuery(来自TaskQuery的唯一值......基本上是子项目).每个还有一个简单的度量,它是Assigned hours列的总和.

数据本身看起来像您期望的Project 2010文件,并具有{start_date},{finish_date}和小时.任务的日期可以跨越1天到5年......这就是我的问题所在.

如何为长时间运行的任务拆分/分块预先求和的值以匹配我正在寻找的时间间隔?

即使我使用日期表中的年份列,时间智能也没有抓住它并且我已经没有计算CALCULATE(SUM(FILTER(COUNTROWS(DATESBETWEEN)))类型的东西了.

有两个中间步骤,我试图找出无济于事.我认为它们都是通过相同的有效功能来解决,以达到小时最终目标,服务区域,资源,年份.

透视表显示

  • 按年计算的资源小时数
  • 按服务区划的小时数,按年份计算

为了显示最终目标

  • 按服务区域,按资源划分的小时数,按年份计算

您可以在下面的输出中看到该问题.

错误的输出示例

请注意,当使用分配的小时总数和AssignmentQuery中的资源名称时,我得到正确的总和,但是当使用任何日期值时...我只得到开始日期的小时数(模型中的活动关系).我需要的是这些时间在它们适用的时期内均匀分布(因此,如果在2016年1月1日至1月1日之间有1000小时的话,我希望每年有333小时的时间显示) .

我最初的想法是选择器/过滤器/计算功能需要执行以下操作:

  • 选择此人的小时数
  • 从过滤器或列标题中选择过滤到的时段中的天数(例如月/年/季/任何)
  • 计算每天的小时数
  • 获取过滤期间的工作日
  • 从重叠中选择小时的总和

任何想法都非常感谢!我愿意做一些额外的ETL /数据创建作为PowerQuery步骤,但是我真的想为此找出正确的DAX表达式,因此它可以作为项目的时间切片器/过滤器.

提前致谢.

**编辑发布修改后的答案**

[Hours Apportioned Raw] :=
DIVIDE (
    CALCULATE (
                [Hours],
                FILTER (
                    AssignmentQuery,
                    AssignmentQuery[Start_Date] <= MAX ( Dates[Date] )
                        && AssignmentQuery[Finish_Date] >= MAX ( Dates[Date] )
                        )
                )
    , ( COUNTROWS (
                    DATESBETWEEN ( 
                                    Dates[Date]
                                    , FIRSTDATE ( AssignmentQuery[Start_Date] )
                                    , …
Run Code Online (Sandbox Code Playgroud)

excel-formula cross-join business-intelligence powerpivot dax

4
推荐指数
1
解决办法
2568
查看次数

Python 2.x 子列表参数等效于 3.x

我正在 Python 中进行一些 NLP 实验,并希望在 Python 3.x 中实现这个功能,尽管这里的 lambda 扩展让我很困难,我不确定它会如何在 3.x 中实现;有什么建议?

    candidates = [' '.join(word for word, pos, chunk in group).lower()
              for key, group in itertools.groupby(all_chunks, lambda (word,pos,chunk): chunk != 'O') if key]
Run Code Online (Sandbox Code Playgroud)

由于 3.x 不支持子列表参数,我得到的错误就在这块上

lambda (word,pos,chunk)
Run Code Online (Sandbox Code Playgroud)

原始来源是这里的extract_candidate_words函数:http : //bdewilde.github.io/blog/2014/09/23/intro-to-automatic-keyphrase-extraction/

python nlp nltk

2
推荐指数
1
解决办法
2893
查看次数