问题标签 [user-defined-aggregate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
387 浏览

scala - 按数据集分组并在 Spark Scala 中运行自定义函数

我正在使用 Spark Scala 并且有一个要分组的数据集,然后将 GroupedData 发送到自定义函数。在自定义函数中,我将处理行并更新一个空数据框。

我有以下数据框DF1

分组后SECURITY_ID,我得到 2 个基于SECURITY_ID值(290X2 和 35G71)的数据集。这些数据集必须发送到自定义函数。

我试过了:

  1. Groupby on,SECURITY_ID但它需要进行一些聚合,而我没有:

    我不想要聚合,但只要我可以在分组数据集上传递块F中的函数,我仍然可以删除聚合列。applyapply不采取任何自定义功能。

  2. 窗口功能打开,SECURITY_ID但我不知道如何根据每个窗口执行自定义功能:

    我想看看如何F在窗口上调用函数,而不是通过添加列。

0 投票
1 回答
71 浏览

c# - #region IBinarySerialize 上的字段顺序

我创建了IBinarySerialize区域以便为我的用户定义聚合创建我的 CLR。我试图在 C# 中复制我的 XIRR 函数,只是为了学习如何使用 CLR。我将写入和读取的顺序相同,但是当我尝试构建时出现错误:

严重性代码描述项目文件行抑制状态
错误 CS1503 参数 1:无法从 'System.Data.SqlTypes.SqlDateTime' 转换为 'bool' CustomAggregates D:\Transfer\CustomSqlAggregates\CustomAggregates\XIRR.cs 255 活动

错误来自写入部分。

在我在示例中看到的一些示例之后,我似乎无法找到我在这种安排中缺少的内容。这是结构的获取/设置

提前致谢。

如果您希望我提供更多信息,请告诉我。

0 投票
1 回答
278 浏览

cassandra - 在 cassandra 中通过计算更新列

我正在尝试在 cassandra 表中添加一个新列以帮助进行一些客户端操作。该表已经存在,并且其中包含数据。主键是 bigint。

这个想法是在表上添加一个列,该列将创建主键的域。

所以这里的新列是一个int,它必须有<primary-key % 10>的值,这会给我新列的10个可能的值,比如基于主键最后一位的10页。主键被命名idx,新列被调用idx_page

一个想法是将新的 'idx_page' 列添加为 CLUSTERING 列,但这似乎不起作用,使用 ALTER TABLE 语句。如果这应该起作用,那么我可能对我的 cql 语句做错了改变表。

接下来我尝试添加新列,然后在其上添加索引,因为最终客户端将需要根据该列的值执行 SELECT 以获取在新列上具有特定值的所有行。这工作得很好。

无论是idx_page聚簇列还是带有索引的普通列,仍有两个问题需要解决:

  1. 现有行在新列上有一个 NULL“值”(这是预期的)
  2. 我必须找出最好的方法,即当插入新行时,将为新列分配一个基于主键计算的值,最好不要通过更改所有客户端代码来手动执行此操作。

我想我可以通过使用 cassandra FUNCTIONS 和 AGGREGATES 来解决这两个问题?

理想情况下,我希望能够手动调用某个函数一次,以更新所有现有行,并为 分配一个值idx_page,该值始终由 (idx % 10) 计算。

然后在插入时,我希望自动运行相同的逻辑,以便 idx_page 在插入阶段获得一个值。

我不确定如何进行此操作,或者即使我使用 UDF/UDA 走在正确的道路上。

请有任何意见或建议。

亚历克斯

0 投票
0 回答
91 浏览

scala - 具有窗口功能的 Spark UDAF

为了达到我的要求“使用提供的外部库处理提供的数据”,我使用 spark-scala 编写了一个 UDAF,它工作正常,直到我得到如下场景:

TestWindowFunc.scala

CustAvg.scala

学生标记.csv

预期产出

实际输出

这是火花在这种情况下的行为方式还是我在这里做错了什么?

有人可以用最合适的解释帮助我吗?

版本详情:

  • 标量:2.11
  • 火花:2.4.0

提前致谢。

0 投票
1 回答
67 浏览

sql-server - 如何在使用 SQLCLR 用户定义的聚合函数 (UDA) 时提高查询性能

我们在使用 SQLCLR 用户定义的聚合函数 (UDA) 时发现了性能问题,

这是我们的场景:我们需要计算 2 列:键和值,其值如下:

钥匙 价值
第 1 行 a/b/c/d/e 1/2/3/2/1
第 2 行 a/b/c/d/e 2/0/1/2/3
第 3 行 a/b/c/d/e 2/3/4/1/2

我们需要一个聚合函数来获取每个指标的总和,在上面的示例中,我们希望得到这样的结果:

钥匙 价值
结果 a/b/c/d/e 5/5/8/5/6

我们无法使用本机聚合函数来获得这种结果,因此我们使用 SQLCLR UDA 来获得这种结果。我们发现当 SQLCLR UDA 与 GROUP BY 子句一起使用时,此 UDA 的性能很差。

经过一番调查,我们发现原因如下:

  1. 当我们使用 SQLCLR UDA 时,必须使用 StreamAggregate 操作,并且会引入昂贵的排序运算符,从而降低 UDA 的性能。
  2. 当我们使用 SQLCLR UDA 时,只能使用行模式来计算排序和聚合运算符中的结果。

所以,我的问题:

  1. 在使用用户定义的聚合函数时,用户是否有机会强制 SQL Server 使用哈希聚合运算符而不是流运算符?
  2. 用户在使用用户定义的聚合函数时是否有机会使用排序运算符?
  3. 用户在使用用户定义的聚合函数时是否有机会使用批处理模式?
0 投票
0 回答
55 浏览

sql-server - 如何在 SQL Server 2017 中创建 CLR 用户定义函数

我有一个 SQL Server 数据库项目(sqlproj 文件),其中我引用了一个程序集,其中包含每个https://docs.microsoft.com/en-us/sql/relational-databases/clr-integration-的用户定义聚合函数数据库对象-用户定义函数/clr-用户定义函数?view=sql-server-2017

在执行此操作之前,我无法部署或使用我的功能:

...并且:

在此过程中,我尝试对程序集进行签名(在 pfx 中生成自签名证书),但无法弄清楚如何让 SQL Server 信任该证书。

据我所知,我所做的对于本地开发部署是可以接受的,但这不是部署到实时环境(或推送到 Azure 数据库服务)的正确方法。

我已经看到建议部署到旧版本的 SQL Server 以提取程序集的哈希以在建立信任的命令中使用;这对我没有用,因为我只有 SQL Server 2017,并且无意安装类似 2008 的东西来提取哈希。

我必须执行哪些步骤才能成功地使用我的数据库部署我的自定义程序集并“以正确的方式”建立信任,以及这些步骤中的每一个究竟完成了什么?我的部分问题是对每个必需步骤的需求、目的、副作用和“意义”缺乏明确性。