[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"glossary-window-function::ru":3,"gloss-cluster-window-function::ru":26,"gloss-next-window-function::ru":9},{"slug":4,"category":5,"name":6,"definition":7,"meta_desc":8,"faq":9,"schema_markup":9,"related":10},"window-function","data-infra","Оконная функция","Оконная функция вычисляет значение для каждой строки, используя связанный с ней набор строк, но не схлопывая их в одну. Агрегат возвращает одно число на группу; оконная функция возвращает число на строку, продолжая видеть группу. Именно эта разница позволяет выразить нарастающие итоги, ранжирование, порядковые номера событий на клиента, скользящие средние и сравнение с предыдущей строкой одним SQL-выражением вместо самосоединения или кода приложения. В синтаксисе стоит понять три части, потому что большая часть путаницы возникает из их смешения. PARTITION BY задаёт, какие строки относятся друг к другу, — аналог GROUP BY, но без схлопывания. ORDER BY задаёт порядок внутри секции и именно он делает осмысленными нарастающие итоги и обращения к соседним строкам. Указание рамки определяет, какую часть упорядоченной секции функция видит для текущей строки; так выражается скользящее среднее по предшествующему окну. Пропуск рамки оставляет умолчание, которое не всегда совпадает с ожиданиями, и это частый источник результатов, выглядящих почти правильно. В аналитике это стандартный инструмент для вопросов, из которых состоит продуктовая отчётность: первое и последнее событие каждого пользователя, промежуток между последовательными событиями, ранг аккаунтов по выручке внутри региона, скользящее число активных за семь дней. На больших таблицах они дороги, так как требуют упорядочивания внутри каждой секции, поэтому в хранилище стоит проверить, поддерживает ли выбранный столбец секционирования сама раскладка хранения.","Оконная функция даёт значение на строку, видя связанные строки: PARTITION BY, ORDER BY и рамка, а также почему рамка по умолчанию удивляет.",null,[11,14,17,20,23],{"slug":12,"name":13},"columnar-storage","Колоночное хранение",{"slug":15,"name":16},"data-warehouse","Хранилище данных (Data Warehouse)",{"slug":18,"name":19},"materialized-view","Материализованное представление",{"slug":21,"name":22},"olap","OLAP (аналитическая обработка данных)",{"slug":24,"name":25},"retention-curve","Кривая удержания (Retention Curve)",[27,31,34,37,40,44,47,50,53,56,60,61],{"slug":28,"category":5,"name":29,"updated_at":30},"acid","ACID","2026-08-24T02:46:37+00:00",{"slug":32,"category":5,"name":33,"updated_at":30},"ann-search","ANN-поиск (приближённый поиск ближайших соседей)",{"slug":35,"category":5,"name":36,"updated_at":30},"backpressure","Обратное давление (backpressure)",{"slug":38,"category":5,"name":39,"updated_at":30},"batch-processing","Пакетная обработка (Batch Processing)",{"slug":41,"category":5,"name":42,"updated_at":43},"bm25","BM25","2026-08-24T02:46:38+00:00",{"slug":45,"category":5,"name":46,"updated_at":30},"cache","Кэш (Cache)",{"slug":48,"category":5,"name":49,"updated_at":30},"cap-theorem","Теорема CAP (CAP theorem)",{"slug":51,"category":5,"name":52,"updated_at":30},"change-data-capture","Захват изменений данных (CDC)",{"slug":54,"category":5,"name":55,"updated_at":30},"chroma","Chroma",{"slug":57,"category":5,"name":58,"updated_at":59},"chunk-overlap","Перекрытие фрагментов","2026-08-24T03:30:02+00:00",{"slug":12,"category":5,"name":13,"updated_at":30},{"slug":62,"category":5,"name":63,"updated_at":30},"connection-pooling","Пулинг соединений (Connection Pooling)"]