标签: aggregate

使用linq对相邻值进行分组

我有一个int值的排序列表,我想组相邻的值.下一个值为nextvalue> = prevValue + 1的值是邻居.

例如:列表:

{1,2,3,5,6,8,9,10}
Run Code Online (Sandbox Code Playgroud)

团体将是:

{1,2,3}
{5,6}
{8,9,10}
Run Code Online (Sandbox Code Playgroud)

这可以用linq完成吗?

这可以很容易地在没有linq的情况下完成 - 通过迭代列表,但我想知道linq是否有解决方案.

.net linq group-by aggregate

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

PostgreSQL 将出现次数计入 json 键/值

给定一个文本元素数组,我想计算出现的次数并将它们作为带有文本键和整数值的子对象返回。(PostgreSQL 9.4)

情况 1 - 没有参考集

SELECT ARRAY['3G','2G','2G','3G','3G','3G','3G','4G']
Run Code Online (Sandbox Code Playgroud)

应该转化为

SELECT '{"2G": 2, "3G": 5, "4G": 1}'::jsonb
Run Code Online (Sandbox Code Playgroud)

案例 2 - 使用参考集

给定一组可能的条目ARRAY['2G','3G','4G'],返回的 json 还应包含计数为零的元素。

SELECT ARRAY['3G','2G','2G','3G','3G','3G','3G']
Run Code Online (Sandbox Code Playgroud)

应该转变为

SELECT '{"2G": 2, "3G": 5, "4G": 0}'::jsonb
Run Code Online (Sandbox Code Playgroud)

我通过使用非常接近案例 1 和 2

-- case 1
SELECT json_object( array_agg(r.a)::text[],array_agg(r.num)::text[] ) 
FROM (
  SELECT a, count(a) as num 
  FROM unnest( ARRAY['3G','2G','2G','3G','3G','3G','3G','4G'] ) a
  GROUP BY a ORDER BY a
) r;

--case 2
SELECT json_object( array_agg(r.ref)::text[],array_agg(r.num)::text[] ) 
FROM (
  SELECT ref, count(a) as num 
  FROM …
Run Code Online (Sandbox Code Playgroud)

arrays postgresql json aggregate postgresql-9.4

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

如何在 Python 中访问聚合函数的值

我创建了一个数据帧并分组和聚合时间戳,为每个分组提供最小值和最大值,结果数据帧看起来像这个 DF 定义为病人 ID,时间戳我按病人 ID 对 DF 进行分组,然后我想获取最小值和最大值每个组的最大时间戳,我这样做了

bypatient_date = pd.DataFrame(byencounter.agg({'timestamp' : [np.min,np.max]})).reset_index())

  patient_id  timestamp            
              amin        amax
0         19  3396-08-21  3396-08-25
1         99  2723-09-27  2727-03-17
2       3014  2580-12-02  2581-05-01
3      24581  3399-07-19  3401-04-13
Run Code Online (Sandbox Code Playgroud)

我正在尝试找出每个患者 ID 的最小值和最大值之间的差异,但在尝试访问时间戳 amin 和时间戳 amax 中的值时遇到问题有没有办法在不循环但使用内置 pandas 或 numpy 的情况下执行此操作

python aggregate pandas

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

对数时间内聚合的数量

如何在对数(至少以二为底)编译时间(严格来说,以对数实例化数量)中定义聚合的数量?

我目前能做的就是在线性时间内实现期望的目标:

#include <type_traits>
#include <utility>

struct filler { template< typename type > operator type (); };

template< typename A, typename index_sequence = std::index_sequence<>, typename = void >
struct aggregate_arity
    : index_sequence
{

};

template< typename A, std::size_t ...indices >
struct aggregate_arity< A, std::index_sequence< indices... >, std::__void_t< decltype(A{(indices, std::declval< filler >())..., std::declval< filler >()}) > >
    : aggregate_arity< A, std::index_sequence< indices..., sizeof...(indices) > >
{

};

struct A0 {};
struct A1 { double x; };
struct A2 { int i; …
Run Code Online (Sandbox Code Playgroud)

c++ aggregate type-traits c++11 c++14

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

通过聚合SQL审计记录来衡量应用程序性能

假设有一个包含两列的简单审计表(在生产中有更多列):

ID | Date
Run Code Online (Sandbox Code Playgroud)

处理请求时,我们在此表中添加一条记录.请求分批处理,批处理中可以有任意数量的项目.对于每个项目,我们将添加一条记录.批次之间将存在至少2秒的延迟(该数量是可配置的).

性能是通过每单位时间(例如每秒)处理请求的速度来衡量的.考虑这个示例数据(2个集群,项目数量相同,仅用于演示目的):

--2016-01-29 10:27:25.603
--2016-01-29 10:27:25.620
--2016-01-29 10:27:25.637
--2016-01-29 10:27:25.653
--2016-01-29 10:27:25.723
--Avg time between requests = 24ms

--2016-01-29 10:27:34.647
--2016-01-29 10:27:34.667
--2016-01-29 10:27:34.680
--2016-01-29 10:27:34.690
--2016-01-29 10:27:34.707
--Avg time = 12ms
Run Code Online (Sandbox Code Playgroud)

我们可以说,在最坏的情况下,每秒可以处理41.67个请求,最多可以处理83.33个请求.很高兴知道平均批次性能.

题.是否可以单独使用T-SQL获取这些指标以及如何使用?

编辑:要使结果具有统计显着性,丢弃批次可能比小于10个项目(可配置)更有用.

sql t-sql sql-server aggregate performance-testing

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

如何获取 ElasticSearch 中每种映射类型的文档(记录)计数?

我有一个名为“myindex”的 ElasticSearch 索引,我将三种不同映射类型(人员、事件和供应商)的文档加载到其中...

curl -XPOST localhost:9200/myindex/person/_bulk --data-binary  @../JSON_DATA/persons.json
curl -XPOST localhost:9200/myindex/event/_bulk --data-binary  @../JSON_DATA/events.json
curl -XPOST localhost:9200/myindex/vendor/_bulk --data-binary  @../JSON_DATA/vendors.json
Run Code Online (Sandbox Code Playgroud)

使用以下命令可以看到索引创建成功:

curl 'localhost:9200/_cat/indices?v'
Run Code Online (Sandbox Code Playgroud)

我可以使用以下命令成功列出所有映射类型:

curl -s -XGET 'http://localhost:9200/myindex/_mapping/?pretty'
Run Code Online (Sandbox Code Playgroud)

我的问题 - A 部分:如何获取显式命名索引(“myindex”)中每种映射类型的文档聚合/总数?换句话说,我想知道每种映射类型的文档数量。

注意:我尝试过curl -s -XGET 'http://localhost:9200/myindex/_count/?pretty',但它只返回所有映射类型的总计数,而不是每种映射类型的总计数。换句话说,它并没有细分县城海滩测绘类型。

我的问题 - B 部分:鉴于能够获取每种映射类型的文档聚合/总数,如何获取存储在显式命名索引(“myindex”)中的任何一种特定映射类型的聚合计数?换句话说,我想知道索引“myindex”下一种显式命名的映射类型(例如“事件”)的文档数量。

aggregate count command-line-interface elasticsearch

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

DDD - 如何补水

问题:从存储库中重新合成聚合的最佳,有效和面向未来的方法是什么?提供方式的专家和内容是什么,我的看法是否正确?

假设我们有一个带私有setter的Aggregate Root,但是有一个用于访问状态的公共getter

行为是通过聚合根上的方法完成的.

指示存储库加载聚合.

目前我看到了几种可能的方法来实现这一目标:

  1. 通过反射设置状态(手动或自动,例如Automapper)
  2. make 构造函数接受属性,以便设置状态
  3. 使用状态对象加载聚合

1)Jimmy Bogard暗示他的工具Automapper不适用于双向映射.但有些人认为我们必须务实,以一种帮助你的方式使用工具.

对我来说,我不喜欢通过反射完全补液.也许Automapper存在,或者聚合根被弯曲,这样就可以完成映射(参见Vaughn对他的文章的一些评论).

2)创建用于补液的构造因子,具有几个参数,因此聚集体的状态以正确的方式再水合.

这几个参数可以扩展(=新构造函数)或定义可以更改.我喜欢这种方法,除了有一堆参数的部分.

3)状态是聚合根的属性.状态被封装在一个新对象中,该对象由存储库构建,然后被提供给聚合根以获得正确的init.

有些人认为构建这个状态对象是更多的工作(新类,实体上的状态属性暴露和聚合根来强制执行业务规则),但它提供了一种初始化状态的简洁方法.

假设我们需要事件源,加载状态是否类似于加载事件?状态对象是否提供了处理事件的方法?它是未来的证据吗?

domain-driven-design aggregate automapper

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

按聚合动态列名匹配进行分组

是否可以group_by使用dplyr在列名上使用正则表达式匹配?

library(dplyr) # dplyr_0.5.0; R version 3.3.2 (2016-10-31)

# dummy data
set.seed(1)
df1 <-  sample_n(iris, 20) %>% 
  mutate(Sepal.Length = round(Sepal.Length),
         Sepal.Width = round(Sepal.Width))
Run Code Online (Sandbox Code Playgroud)

静态版本分组(外观/工作正常,想象一下,如果我们有10-20列):

df1 %>% 
  group_by(Sepal.Length, Sepal.Width) %>% 
  summarise(mySum = sum(Petal.Length))
Run Code Online (Sandbox Code Playgroud)

动态分组- "丑陋"版本:

df1 %>% 
  group_by_(.dots = colnames(df1)[ grepl("^Sepal", colnames(df1))]) %>% 
  summarise(mySum = sum(Petal.Length))
Run Code Online (Sandbox Code Playgroud)

理想情况下,这样的事情(不起作为starts_with返回索引):

df1 %>% 
  group_by(starts_with("Sepal")) %>% 
  summarise(mySum = sum(Petal.Length))
Run Code Online (Sandbox Code Playgroud)
Error in eval(expr, envir, enclos) : 
   wrong result size (0), expected 20 or 1
Run Code Online (Sandbox Code Playgroud)

预期产量:

# Source: local data frame …
Run Code Online (Sandbox Code Playgroud)

aggregate r dplyr

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

Pandas .agg() 转换为列表但跳过 nan

如何合并/减少 DataFrame,以便它按自定义列“id”合并行,并将值放入列表中(如果它们不是 Nan)。到目前为止,我想出了这个,但它并没有删除 Nans:

x: pd.DataFrame = df_chunk.groupby('id', dropna=True).agg(lambda x: list(x))
for row in x.itertuples():
    print(row)
Run Code Online (Sandbox Code Playgroud)

所以结果是:

Pandas(Index=1, surname=['Bruce', nan, nan], given_name=['Erin', nan, nan], date_of_birth=['11/03/1961', '11/04/1961', '11/06/1961'], address=['10 Kestrel Wood Way, York', '4 Ward Avenue, Cowes', '11 Woodhill Court, Woodside Road, Amersham'], postcode=['YO31 9EJ', 'BD10 0LT', 'WA14 1LH'], mobile=['+64 21 421 2300', '+64 29 975 1551', '+64 22 5491 7112'])
Run Code Online (Sandbox Code Playgroud)

期望的结果是 surname=['Bruce']、given_name=['Erin'] 等等

aggregate nan dataframe python-3.x pandas

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

如何在 C++ 中使用原始数组成员概括从 std::array 到 struct 的转换?

在 C++ 中,我有这个来自 C 的结构。这段代码非常旧,无法修改:

struct Point {
   double coord[3];
};
Run Code Online (Sandbox Code Playgroud)

另一方面,我有这个现代函数,它返回现代std::array而不是原始数组:

std::array<double, 3> ComputePoint();
Run Code Online (Sandbox Code Playgroud)

目前,为了Point从返回值初始化 a,我手动从 中提取每个元素std::array

std::array<double, 3> ansArray{ComputePoint()};
Point ans{ansArray[0], ansArray[1], ansArray[2]};
Run Code Online (Sandbox Code Playgroud)

这个解决方案是可行的,因为只有三个坐标。我可以将其模板化为一般长度吗?我想要类似相反的转换:std::to_array

c++ arrays aggregate initialization stdarray

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