问题标签 [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.
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 技巧。
sql-server - 如果聚合 0 行,SQL Server 用户定义的聚合将返回错误
我有这个 SQL Server 用户定义的聚合:
部署此聚合后,我尝试运行此查询:
我得到这个错误:
但是,这有效:
并按预期返回 NULL。
这似乎是 SQL Server 中的一个错误,但我该如何解决呢?
sql-server - SQL CLR 扩展的舍入错误(用户定义的聚合)
我正在为 SQL Server 2008 编写一些自定义的 .Net 扩展。其中一个是用户定义的聚合,它应该将一组十进制数字聚合为一个十进制值。
为了缩小我的问题,我使用了一个简单的Const
聚合,它只返回一个常量十进制值。将此作为用户定义的聚合添加到 SQL Server 时,返回的值总是四舍五入:
我错过了什么?
这是代码:
将此代码编译为名为SqlServer.Clr.Extensions.dll
. 以下脚本可用于将其添加到 SQL Server 并验证意外行为:
hadoop - 带参数的 Hive UDF
我想编写一个可以接受常量参数的自定义 UDF (UDAF/UDTF)。
比如我想写一个函数MAX(COL, i),其中COL是求最大值的值的集合,i是位置(即i=1,找最高,i=2,找第二高等),这样 Hive 查询看起来像:
这不仅适用于 MAX,因此我需要一种能够做到这一点的通用方法,因此从已排序的集合中进行排序和选择将不起作用。
.net - 消息 6558:CREATE AGGREGATE 失败,因为类型“连接”不符合 UDAGG 规范
当我运行 T-SQL 命令时,我创建了一个 SQLCLR 程序集并添加了它:
我得到错误:
消息 6558,级别 16,状态 1,第 1 行
CREATE AGGREGATE 失败,因为类型“连接”由于方法“累积”不符合 UDAGG 规范。
什么是 UDAGG 规范?
c# - 具有多个参数的 SQLCLR 自定义聚合
我无法理解 CLR 用户定义的聚合是如何工作的。
我必须创建一些具有多个参数的自定义 CLR 聚合。关键是根据第二个参数获取第一个参数的值。
例如,我的表中有以下值,并且Name
每个值都需要最年长的员工Type
:
所以我想写一个这样的查询来使用我的程序集得到结果:
这将回应:
看起来可以使用 CLR 用户定义的聚合,但我很难找到这种实现的具体示例。
目前我有这个。我创建了一个类来收集数据,但是如何对它们进行排序(或做其他事情)?
有任何想法吗 ?
c# - 具有多个 sql_variant 参数的 SQLCLR 自定义聚合
嗨,
几个月前,我在这篇文章中发布了一个关于 CLR 用户定义聚合的问题。
这就像一个魅力。但是现在我想用 sql_variant 类型的两个参数来实现完全相同的功能。
就像在我之前的文章中一样,这两个函数是 sMax 和 sMin 并且将根据第二个值返回第一个值。
我发现 sql_variant 类型是 C# 中的对象类型。但是我很难积累和比较对象。
在不知道类型的情况下比较这两个对象的最佳选择是什么?
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
方法的变量是否相同?而且buffer
is mutableAggregationBuffer
,所以它应该是可变的,对吧?
为什么我的 mutable.Map 变得不可变?有谁知道发生了什么?
我真的需要这个函数中的可变 Map 来完成任务。我知道有一种解决方法可以从不可变映射创建一个可变映射,然后对其进行更新。但是我真的很想知道为什么程序中可变的会自动转换为不可变的,这对我来说没有意义。
scala - Spark Scala:计算中位数的用户定义聚合函数
我正在尝试找到一种方法来计算给定数据帧的中位数。
现在我想做这样的事情:
df.groupBy("col1").agg(calcmedian("col2"))
结果应如下所示:
因此 calcmedian() 必须是 UDAF,但问题是,UDAF 的“评估”方法只需要一行,但我需要整个表来对值进行排序并返回中位数......
这有可能吗?还是有另一个不错的解决方法?我想强调,我知道如何用“一组”计算数据集的中位数。但我不想在“foreach”循环中使用这个算法,因为这是低效的!
谢谢!
编辑:
这就是我到目前为止所尝试的: