APPROX_COUNT_DISTINCT (Transact-SQL)
Область применения: SQL Server 2019 (15.x) База данных SQL Azure Управляемый экземпляр SQL Azure конечная точка аналитики SQL Azure Synapse Analytics в хранилище Microsoft Fabric в Microsoft Fabric
Эта функция возвращает приблизительное количество уникальных значений, не равных NULL, в группе.
Соглашения о синтаксисе Transact-SQL
Синтаксис
APPROX_COUNT_DISTINCT ( expression )
Аргументы
выражение
Выражение любого типа, кроме image, sql_variant, ntext и text.
Типы возвращаемых данных
bigint
Замечания
Функция APPROX_COUNT_DISTINCT( expression )
вычисляет выражение для каждой строки в группе и возвращает приблизительное количество уникальных значений, не равных NULL, в группе. Эта функция предназначена для агрегирования в больших наборах данных, для которых скорость реагирования намного важнее абсолютной точности.
Функция APPROX_COUNT_DISTINCT
предназначена для использования в сценариях использования больших данных и оптимизирована для следующих условий:
- доступ из наборов данных, содержащих миллионы или более строк, И
- агрегирование данных одного или нескольких столбцов с большим количеством различных значений.
Реализация функции гарантирует до 2 % ошибок с вероятностью 97 %.
APPROX_COUNT_DISTINCT
использует меньше памяти, чем длительная операция COUNT DISTINCT. Если сравнивать с точной операцией COUNT DISTINCT, то с учетом меньшего объема используемой памяти уменьшается и вероятность того, что APPROX_COUNT_DISTINCT
память будет выгружаться на диск. См. дополнительные сведения о HyperLogLog.
Примечание.
С помощью строк, зависимых от параметров сортировки, APPROX_COUNT_DISTINCT использует совпадение двоичных значений и предоставляет результаты, которые могли быть созданы при наличии параметров сортировки BIN, но не BIN2.
Примеры
А. Использование функции APPROX_COUNT_DISTINCT
В этом примере функция возвращает приблизительное количество ключей различных заказов из таблицы "Заказы".
SELECT APPROX_COUNT_DISTINCT(O_OrderKey) AS Approx_Distinct_OrderKey
FROM dbo.Orders;
Вот результирующий набор.
Approx_Distinct_OrderKey
------------------------
15164704
B. Использование функции APPROX_COUNT_DISTINCT с фильтром GROUP BY
В этом примере функция возвращает приблизительное количество ключей различных заказов, отфильтрованных по состоянию заказов из таблицы "Заказы".
SELECT O_OrderStatus, APPROX_COUNT_DISTINCT(O_OrderKey) AS Approx_Distinct_OrderKey
FROM dbo.Orders
GROUP BY O_OrderStatus
ORDER BY O_OrderStatus;
Вот результирующий набор.
O_OrderStatus Approx_Distinct_OrderKey
---------------------------------------------------------------- ------------------------
F 7397838
O 7387803
P 388036