计算非重复值的数量¶
若要计算具有非重复值的行数,可以使用以下方法之一:
使用
DISTINCT
关键字调用 SQL COUNT 函数。如果您只需要非重复值的近似计数,可以使用 HyperLogLog 函数(例如
APPROX_COUNT_DISTINCT
)。有关详细信息,请参阅 估计非重复值的数量。如果要对分层聚合(例如多个分组集、汇总或多维数据集)的非重复值进行计数,可以使用以下方法之一来提高性能(而不是使用
COUNT(DISTINCT <expr>)
):-
通过这种方法,您可以使用位图函数生成位图,来识别列中的不同整数值。一个位图最多可以表示 32,768 个非重复值,因此,如果非重复值的数量超过 32,768,则此方法需要“分桶”(使用多个位图)。
有关详细信息,请参阅 使用位图计算分层聚合的非重复值。
-
通过这种方法,您可以使用聚合函数来生成包含一列中唯一值的数组。然后,可以调用 ARRAY_SIZE 来获取值的计数。
此方法适用于任何数据类型的值(例如 VARIANT),并且不需要“分桶”,除非 ARRAY 中数据的大小超过 ARRAY 的大小上限。
有关详细信息,请参阅 使用数组计算分层聚合的非重复值。
-
后续主题: