问题标签 [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 投票
2 回答
1680 浏览

sql-server - SQL Server 2008 中的用户定义聚合 - 如何使用 MaxByteSize = -1 进行部署?

我在这里(和其他地方)读到,在 SQL Server 2008 中,可以构建一个用户定义的聚合,它可以返回一个超过 8000 个字符的字符串。这正是我所需要的。

据说,方法是将 maxByteSize 设置为 -1 而不是数字 btw 1 和 8000;这应该允许最大为 2GB 的任何大小。

显然,出于某种原因,如果使用此设置,则无法直接从 Visual Studio 2008 进行部署;所以你需要手动部署。

所以:我构建了我的项目——GroupConcat(它应该模拟 MySQL 的 group_concat 聚合器)——它在项目的 bin 文件夹中为我提供了一个文件“SqlClassLibrary.dll”。根据上述链接页面上的说明,我在 SQL Server 中构建程序集。命令执行成功。但是,当我尝试实际使用groupconcat 聚合器时:

select department, dbo.groupconcat(projectNumber) from projectleads group by department

...它说它找不到。如果我将 maxByteSize 设置为 8000 并直接从 VS2008 中部署,这一切都可以正常工作,但我需要 >8000。有人知道我在做什么错吗?

谢谢-丹

注意: 我确实需要一个 groupconcat 聚合函数,而不是使用一些我经常看到的 SQL Server 技巧。

0 投票
2 回答
354 浏览

sql-server - 如果聚合 0 行,SQL Server 用户定义的聚合将返回错误

我有这个 SQL Server 用户定义的聚合:

部署此聚合后,我尝试运行此查询:

我得到这个错误:

但是,这有效:

并按预期返回 NULL。

这似乎是 SQL Server 中的一个错误,但我该如何解决呢?

0 投票
1 回答
739 浏览

sql-server - SQL CLR 扩展的舍入错误(用户定义的聚合)

我正在为 SQL Server 2008 编写一些自定义的 .Net 扩展。其中一个是用户定义的聚合,它应该将一组十进制数字聚合为一个十进制值。

为了缩小我的问题,我使用了一个简单的Const聚合,它只返回一个常量十进制值。将此作为用户定义的聚合添加到 SQL Server 时,返回的值总是四舍五入:

我错过了什么?

这是代码:

将此代码编译为名为SqlServer.Clr.Extensions.dll. 以下脚本可用于将其添加到 SQL Server 并验证意外行为:

0 投票
2 回答
1570 浏览

c# - SQL 用户定义的值的聚合顺序是否保留?

我使用此 MSDN 页面中的代码创建用户定义的聚合以group by's在 SQL 服务器中连接字符串。我的要求之一是连接值的顺序与查询中的顺序相同。例如:

使用查询

会导致:

结果似乎总是正确且如预期的那样,但我遇到了这个页面,指出订单不能保证,并且该属性SqlUserDefinedAggregateAttribute.IsInvariantToOrder仅供将来使用。

所以我的问题是:假设字符串中的连接值可以以任何顺序结束是否正确?
如果是这种情况,那么为什么 MSDN 页面上的示例代码使用该IsInvariantToOrder属性?

0 投票
1 回答
2449 浏览

hadoop - 带参数的 Hive UDF

我想编写一个可以接受常量参数的自定义 UDF (UDAF/UDTF)。

比如我想写一个函数MAX(COL, i),其中COL是求最大值的值的集合,i是位置(即i=1,找最高,i=2,找第二高等),这样 Hive 查询看起来像:

这不仅适用于 MAX,因此我需要一种能够做到这一点的通用方法,因此从已排序的集合中进行排序和选择将不起作用。

0 投票
2 回答
863 浏览

.net - 消息 6558:CREATE AGGREGATE 失败,因为类型“连接”不符合 UDAGG 规范

当我运行 T-SQL 命令时,我创建了一个 SQLCLR 程序集并添加了它:

我得到错误:

消息 6558,级别 16,状态 1,第 1 行
CREATE AGGREGATE 失败,因为类型“连接”由于方法“累积”不符合 UDAGG 规范。

什么是 UDAGG 规范?

0 投票
2 回答
1182 浏览

c# - 具有多个参数的 SQLCLR 自定义聚合

我无法理解 CLR 用户定义的聚合是如何工作的。

我必须创建一些具有多个参数的自定义 CLR 聚合。关键是根据第二个参数获取第一个参数的值。

例如,我的表中有以下值,并且Name每个值都需要最年长的员工Type

所以我想写一个这样的查询来使用我的程序集得到结果:

这将回应:

看起来可以使用 CLR 用户定义的聚合,但我很难找到这种实现的具体示例。

目前我有这个。我创建了一个类来收集数据,但是如何对它们进行排序(或做其他事情)?

有任何想法吗 ?

0 投票
2 回答
393 浏览

c# - 具有多个 sql_variant 参数的 SQLCLR 自定义聚合

嗨,

几个月前,我在这篇文章中发布了一个关于 CLR 用户定义聚合的问题。

这就像一个魅力。但是现在我想用 sql_variant 类型的两个参数来实现完全相同的功能。

就像在我之前的文章中一样,这两个函数是 sMax 和 sMin 并且将根据第二个值返回第一个值。

我发现 sql_variant 类型是 C# 中的对象类型。但是我很难积累和比较对象。

在不知道类型的情况下比较这两个对象的最佳选择是什么?

0 投票
2 回答
1944 浏览

scala - 为什么可变映射在 Spark 的 UserDefinedAggregateFunction(UDAF) 中自动变为不可变

我正在尝试在 Spark 中定义一个 UserDefinedAggregateFunction(UDAF),它计算组的列中每个唯一值的出现次数。

这是一个例子:假设我有一个df这样的数据框,

我将有一个 UDAF DistinctValues

然后我将它应用到数据框 df

我期待有这样的事情:

所以我想出了一个这样的UDAF,

然后我的数据框上有这个功能,

它给出了这样的错误,

看起来在update(buffer: MutableAggregationBuffer, input: Row)方法中,变量buffer是 a immutable.Map,程序厌倦了将其转换为mutable.Map

但我曾经在方法mutable.Map中初始化buffer变量。initialize(buffer: MutableAggregationBuffer, input:Row)传递给update方法的变量是否相同?而且bufferis mutableAggregationBuffer,所以它应该是可变的,对吧?

为什么我的 mutable.Map 变得不可变?有谁知道发生了什么?

我真的需要这个函数中的可变 Map 来完成任务。我知道有一种解决方法可以从不可变映射创建一个可变映射,然后对其进行更新。但是我真的很想知道为什么程序中可变的会自动转换为不可变的,这对我来说没有意义。

0 投票
1 回答
2991 浏览

scala - Spark Scala:计算中位数的用户定义聚合函数

我正在尝试找到一种方法来计算给定数据帧的中位数。

现在我想做这样的事情:
df.groupBy("col1").agg(calcmedian("col2"))

结果应如下所示:

因此 calcmedian() 必须是 UDAF,但问题是,UDAF 的“评估”方法只需要一行,但我需要整个表来对值进行排序并返回中位数......

这有可能吗?还是有另一个不错的解决方法?我想强调,我知道如何用“一组”计算数据集的中位数。但我不想在“foreach”循环中使用这个算法,因为这是低效的!

谢谢!


编辑:

这就是我到目前为止所尝试的: