标签: aggregate

管理实体的历史对象

我们正在将现有系统转换为 DDD,并且正在努力理解一些概念。

我们有一个名为 的聚合根,它具有和 等Animal属性。目前数据库有两个表,分别称为和,它们存储状态更改时有关动物的信息。这些表有时会删除记录,并且在从.StatusSourceStatusHistorySourceHistoryAnimalAnimalRepository

所以最大的问题是它们属于哪里?以下是我们的一些想法:

  • 将它们作为不同的实体对象作为动物聚合的一部分。并具有允许更新它们的相应方法,例如:Animal.UpdateStatus(newStatus),这将使用对象添加到集合中new StatusHistory(this)。但如上所述,当为存储库获取现有动物时,很少需要这些,因此我们不希望存储库加载它们。我们目前没有使用 ORM,而是使用存储库内的表数据网关手动映射。

  • 使每个历史实体成为聚合根。我们不喜欢这种做法,因为感觉我们并没有真正对领域进行建模,而只是朝着Active Record Pattern. 此外,为动物更新这些的任务必须位于动物实体之外。

  • 我们可以尝试将这些历史组合成另一个聚合根,称为AnimalHistory其全部目的是维持动物的历史。但这又会改变将历史存储到动物以外的其他事物中的逻辑。可能是像这样的服务AnimalProcessingService,感觉我们可能正在走向贫血的设计。

我希望有另一种选择可以为我们提供更简洁的设计。

design-patterns domain-driven-design aggregate

5
推荐指数
1
解决办法
2205
查看次数

如何使用JPA聚合字符串?

基础数据:

DEPTNO ENAME
------ ------
    20 SMITH
    30 ALLEN
    30 WARD
    20 JONES
    30 MARTIN
    30 BLAKE
    10 CLARK
    20 SCOTT
    10 KING
    30 TURNER
    20 ADAMS
    30 JAMES
    20 FORD
    10 MILLER
Run Code Online (Sandbox Code Playgroud)

期望的输出:

DEPTNO EMPLOYEES
------ ---------
    10 CLARK,KING,MILLER
    20 SMITH,FORD,ADAMS,SCOTT,JONES
    30 ALLEN,BLAKE,MARTIN,TURNER,JAMES,WARD
Run Code Online (Sandbox Code Playgroud)

我尝试过这个 jpql 查询:

 SELECT deptno, new list(ename) as employees
 FROM dept_emp
Run Code Online (Sandbox Code Playgroud)

然而,出现了一个例外:

org.hibernate.hql.internal.ast.QuerySyntaxException:意外标记:第 1 行第 15 列附近的新内容

JPA 2.1
休眠 4.3.1

另请参阅: /sf/answers/1719943221/

java string hibernate jpa aggregate

5
推荐指数
1
解决办法
7044
查看次数

在 Xcode 中,如何在运行测试时不运行某些运行脚本构建阶段?

我的项目当前已设置,以便 MyApp 目标包含一些运行脚本构建阶段。这些脚本取决于构建阶段的顺序。例如,有一个脚本在复制捆绑资源之前运行,另一个脚本在复制捆绑资源之后运行。

我的测试目标取决于 MyApp,因此当我运行测试(产品菜单、测试)时,我不想包含其中一些脚本,因为它会减慢测试速度。

我想创建一个包含 MyApp 目标的聚合目标。然后将测试时我不想运行的脚本从 MyApp 移出并移入聚合。但是,我不知道如何配置这些脚本运行时的相同顺序。

有没有办法做到这一点?或者也许是一个更好的解决方案?

testing xcode aggregate target ios

5
推荐指数
1
解决办法
3762
查看次数

pandas groupby,然后按列的值选择一行(例如,最小值、最大值)

假设我有一个数据框

Category Data1 column1
A 'SOMEDATA' 10
A 'SOMEDATA' 2
A 'SOMEDATA' -10
B 'SOMEDATA' 10
B 'SOMEDATA' 1
B 'SOMEDATA' -10
Run Code Online (Sandbox Code Playgroud)

等等

我想按列值在每个组中选择一行。例如,ABS(column1)

所以结果数据是

Category Data1 column1
A 'SOMEDATA' 2
B 'SOMEDATA'  1
Run Code Online (Sandbox Code Playgroud)

我怎么能在python中做到这一点?

我不知道如何返回整行。例如,

df.groupby('Category')['column1'].min();
Run Code Online (Sandbox Code Playgroud)

这只会返回 'Category' min(column1) 。

python aggregate pandas

5
推荐指数
2
解决办法
3422
查看次数

PySpark Dataframe 将列融合为行

正如主题所描述的,我有一个 PySpark 数据框,我需要将三列融合成行。每列基本上代表一个类别中的一个事实。最终目标是将数据聚合到每个类别的单个总数中。

这个数据帧中有数千万行,所以我需要一种方法来在 Spark 集群上进行转换而不将任何数据带回驱动程序(在这种情况下为 Jupyter)。

这是我的几个商店的数据框的摘录: +-----------+----------------+-----------------+----------------+ | store_id |qty_on_hand_milk|qty_on_hand_bread|qty_on_hand_eggs| +-----------+----------------+-----------------+----------------+ | 100| 30| 105| 35| | 200| 55| 85| 65| | 300| 20| 125| 90| +-----------+----------------+-----------------+----------------+

这是所需的结果数据帧,每个商店多行,其中原始数据帧的列已融合到新数据帧的行中,每个原始列在新类别列中占一行: +-----------+--------+-----------+ | product_id|CATEGORY|qty_on_hand| +-----------+--------+-----------+ | 100| milk| 30| | 100| bread| 105| | 100| eggs| 35| | 200| milk| 55| | 200| bread| 85| | 200| eggs| 65| | 300| milk| 20| | 300| bread| 125| | 300| eggs| 90| +-----------+--------+-----------+

最终,我想聚合结果数据框以获得每个类别的总数: +--------+-----------------+ |CATEGORY|total_qty_on_hand| +--------+-----------------+ | milk| 105| | bread| …

python aggregate dataframe melt pyspark

5
推荐指数
2
解决办法
8400
查看次数

MongoDB Aggregate 如何配对相关记录进行处理

我在 MongoDB 数据库中捕获了一些事件数据,其中一些事件成对发生。

例如:DOOR_OPEN 和 DOOR_CLOSE 是两个成对发生的事件

事件集合:

{ _id: 1, name: "DOOR_OPEN", userID: "user1", timestamp: t }
{ _id: 2, name: "DOOR_OPEN", userID: "user2", timestamp: t+5 }
{ _id: 3, name: "DOOR_CLOSE", userID: "user1", timestamp:t+10 }
{ _id: 4, name: "DOOR_OPEN", userID: "user1", timestamp:t+30 }
{ _id: 5, name: "SOME_OTHER_EVENT", userID: "user3", timestamp:t+35 }
{ _id: 6, name: "DOOR_CLOSE", userID: "user2", timestamp:t+40 }
...
Run Code Online (Sandbox Code Playgroud)

假设记录按时间戳排序, _id: 1 和 _id: 3 是“user1”的“配对”。_id: 2 和 _id: 6 是“user2”。

我想为每个用户获取所有这些 DOOR_OPEN 和 …

aggregate mongodb

5
推荐指数
1
解决办法
53
查看次数

Python with DataFrame合并聚合...错误:''既是索引级别又是列标签,这是不明确的

import pandas as pd

data1 = [
{'File': '7396ee8aea09.json', 'Last': '2019-04-25 20:24:28+00:00', 'Size': 78796, 'COLA': 'STANDARD'}, 
{'File': '7777682e4/ip/done', 'Last': '2019-04-24 21:45:01+00:00', 'Size': 4, 'COLA': 'CUSTOM'}, 
{'File': 'erparameters.json', 'Last': '2019-04-24 21:45:01+00:00', 'Size': 351, 'COLA': 'STANDARD'}
]
data2 = [
{'File': '3343e4/ip/ip.json', 'Last': '2019-04-24 21:45:01+00:00', 'Size': 20, 'COLA': 'STANDARD'}, 
{'File': 'ta-00000-of-00001', 'Last': '2019-04-24 22:43:17+00:00', 'Size': 140216236, 'COLA': 'STANDARD'}, 
{'File': '-20514.ckpt.index', 'Last': '2019-04-24 22:43:17+00:00', 'Size': 3168, 'COLA': 'STANDARD'}, 
]
# right now 2 for the prova but could be much more..
datas = …
Run Code Online (Sandbox Code Playgroud)

merge aggregate dataframe python-3.x pandas

5
推荐指数
1
解决办法
4957
查看次数

R中xtabs和aggregate之间na.action的不一致

我有以下 data.frame:

x <- data.frame(A = c("Y", "Y", "Z", NA),
                B = c(NA, TRUE, FALSE, TRUE),
                C = c(TRUE, TRUE, NA, FALSE))
Run Code Online (Sandbox Code Playgroud)

我需要计算下表xtabs

A      B C
  Y    1 2
  Z    0 0
  <NA> 1 0
Run Code Online (Sandbox Code Playgroud)

我被告知要使用na.action = NULL,它确实返回了我需要的表:

xtabs(formula = cbind(B, C) ~ A,
      data = x,
      addNA = TRUE,
      na.action = NULL)

A      B C
  Y    1 2
  Z    0 0
  <NA> 1 0
Run Code Online (Sandbox Code Playgroud)

但是,na.action = na.pass返回一个不同的表:

xtabs(formula = cbind(B, C) ~ A, …
Run Code Online (Sandbox Code Playgroud)

aggregate r counting na

5
推荐指数
1
解决办法
354
查看次数

MongoDB java API 聚合 $lookup 和管道使用变量

我有 2 个集合假设为 1 对多关系,例如用户和评论。要求是将用户与其最新评论合并为单个对象,并返回新合并对象的列表作为结果。

聚合在 mongo 控制台中完美运行

db.user.aggregate(
        {
            $addFields:{
                cId: {$toString: '$_id'},
                user: '$$ROOT'
            }
        },
        {$match: {'invitees': {$elemMatch: {'user.userId': '5e70e82532044a5e4e7cbc8d'}}}},
        {$lookup: {
                from: 'comment',
                let: {'cc': '$cId'},
                pipeline: [
                    {$match: {$expr: {$and: [{$eq: ['$$cc', '$userId']},{$gte: ['$time', '$$NOW']}]}}},
                    {$sort: {'time': -1}},
                    {$limit: 1}
                ],
                as: 'next'
            }
        },
        {$unwind: {path: '$next'}},
        {
            $project: {
                _id: 0,
                user: 1,
                next: 1,
                status: {
                    $map: {
                        input: {
                            $filter: {
                                input: '$invitees',
                                as: 'item',
                                cond: {
                                    $eq: ['$$item.user.userId', '$userId']
                                } …
Run Code Online (Sandbox Code Playgroud)

java aggregate mongodb

5
推荐指数
1
解决办法
1393
查看次数

在列 * 和 * 索引上使用 groupby 和聚合与熊猫数据框

我有一个与此类似的表,在 (A, B) 上有一个多索引

>>> columns = ["A", "B", "C", "D"]
... data = [
...     [1, 1, 99, 22],
...     [1, 2, 87, 24],
...     [1, 3, 65, 31],
...     [2, 1, 88, 30],
...     [2, 2, 76, 33],
...     [2, 3, 23, 32],
...     [2, 4, 38, 28],
...     [3, 1, 33, 40],
...     [3, 2, 23, 41],
...]
>>>
>>> pd_table = pd.DataFrame(data=data, columns=columns)
>>> pd_table.set_index(["A", "B"], inplace=True)
>>> print(pd_table)
      C   D
A B
1 1  99 …
Run Code Online (Sandbox Code Playgroud)

python aggregate dataframe pandas pandas-groupby

5
推荐指数
1
解决办法
204
查看次数