stringtranslate.com

Онлайн аналитическая обработка

В вычислительной технике онлайн -аналитическая обработка , или OLAP ( / ˈ l æ p / ), представляет собой подход к быстрому ответу на многомерные аналитические (MDA) запросы. [1] Термин OLAP был создан как небольшая модификация традиционного термина базы данных онлайн-обработка транзакций (OLTP). [2] OLAP является частью более широкой категории бизнес-аналитики , которая также охватывает реляционные базы данных , написание отчетов и интеллектуальный анализ данных . [3] Типичные области применения OLAP включают бизнес-отчетность по продажам, маркетингу , управленческую отчетность, управление бизнес-процессами (BPM), [4] бюджетирование и прогнозирование , финансовую отчетность и аналогичные области, с появлением новых приложений, таких как сельское хозяйство . [5]

Инструменты OLAP позволяют пользователям интерактивно анализировать многомерные данные с разных точек зрения. OLAP состоит из трех основных аналитических операций: консолидация (свертка), детализация и нарезка и деление на части. [6] : 402–403  Консолидация подразумевает агрегацию данных, которые могут быть накоплены и вычислены в одном или нескольких измерениях. Например, все офисы продаж свертываются в отдел продаж или подразделение продаж для прогнозирования тенденций продаж. Напротив, детализация — это метод, который позволяет пользователям перемещаться по деталям. Например, пользователи могут просматривать продажи по отдельным продуктам, которые составляют продажи региона. Нарезка и деление на части — это функция, с помощью которой пользователи могут извлекать (нарезать) определенный набор данных из куба OLAP и просматривать (нарезать) срезы с разных точек зрения. Эти точки зрения иногда называются измерениями (например, просмотр тех же продаж по продавцу, или по дате, или по клиенту, или по продукту, или по региону и т. д.).

Базы данных , настроенные для OLAP, используют многомерную модель данных, что позволяет выполнять сложные аналитические и специальные запросы с быстрым временем выполнения. [7] Они заимствуют аспекты навигационных баз данных , иерархических баз данных и реляционных баз данных.

OLAP обычно противопоставляется OLTP (обработка транзакций в режиме онлайн), которая обычно характеризуется гораздо менее сложными запросами в большем объеме для обработки транзакций, а не для целей бизнес-аналитики или отчетности. В то время как системы OLAP в основном оптимизированы для чтения, OLTP должна обрабатывать все виды запросов (чтение, вставка, обновление и удаление).

Обзор OLAP-систем

В основе любой системы OLAP лежит куб OLAP (также называемый «многомерным кубом» или гиперкубом ). Он состоит из числовых фактов, называемых мерами , которые классифицируются по измерениям . Меры размещаются на пересечениях гиперкуба, который охватывает измерения как векторное пространство . Обычным интерфейсом для управления кубом OLAP является матричный интерфейс, например, сводные таблицы в программе для работы с электронными таблицами, которые выполняют операции проекции по измерениям, такие как агрегация или усреднение.

Метаданные куба обычно создаются из схемы «звезда» или схемы «снежинка» или созвездия фактов таблиц в реляционной базе данных . Меры выводятся из записей в таблице фактов , а измерения выводятся из таблиц измерений .

Каждую меру можно рассматривать как имеющую набор меток или метаданных, связанных с ней. Измерение — это то, что описывает эти метки ; оно предоставляет информацию о мере .

Простым примером может служить куб, содержащий продажи магазина в качестве меры и Дату/Время в качестве измерения . Каждая Продажа имеет метку Дата/Время , которая описывает больше о данной продаже.

Например:

Таблица фактов продаж+------------+----------+| сумма_продажи | идентификатор_времени |+------------+----------+ Измерение времени| 2008.10 | 1234 |----+ +---------+-------------------++------------+----------+ | | time_id | временная метка | | +---------+-------------------+ +---->| 1234 | 20080902 12:35:43 | +---------+-------------------+

Многомерные базы данных

Многомерная структура определяется как «вариация реляционной модели, которая использует многомерные структуры для организации данных и выражения взаимосвязей между данными». [6] : 177  Структура разбита на кубы, и кубы могут хранить и получать доступ к данным в пределах каждого куба. «Каждая ячейка внутри многомерной структуры содержит агрегированные данные, связанные с элементами по каждому из ее измерений». [6] : 178  Даже когда данные обрабатываются, они остаются легкодоступными и продолжают составлять компактный формат базы данных. Данные по-прежнему остаются взаимосвязанными. Многомерная структура довольно популярна для аналитических баз данных, которые используют приложения онлайн-аналитической обработки (OLAP). [6] Аналитические базы данных используют эти базы данных из-за их способности быстро предоставлять ответы на сложные бизнес-запросы. Данные можно рассматривать с разных углов, что дает более широкую перспективу проблемы в отличие от других моделей. [8]

Агрегации

Утверждается, что для сложных запросов кубы OLAP могут выдавать ответ примерно за 0,1% времени, необходимого для того же запроса по реляционным данным OLTP . [9] [10] Самым важным механизмом в OLAP, который позволяет достичь такой производительности, является использование агрегаций . Агрегации строятся из таблицы фактов путем изменения детализации по определенным измерениям и агрегации данных по этим измерениям с использованием агрегатной функции (или функции агрегации ). Количество возможных агрегаций определяется каждой возможной комбинацией детализации измерений.

Сочетание всех возможных агрегаций и базовых данных содержит ответы на все запросы, на которые можно ответить из данных. [11]

Поскольку обычно существует много агрегатов, которые можно вычислить, часто полностью вычисляется только предопределенное число; остальные решаются по требованию. Проблема принятия решения о том, какие агрегаты (представления) вычислять, известна как проблема выбора представления. Выбор представления может быть ограничен общим размером выбранного набора агрегатов, временем их обновления после изменения базовых данных или и тем, и другим. Целью выбора представления обычно является минимизация среднего времени ответа на запросы OLAP, хотя некоторые исследования также минимизируют время обновления. Выбор представления является NP-полным . Было изучено много подходов к проблеме, включая жадные алгоритмы , рандомизированный поиск, генетические алгоритмы и алгоритм поиска A* .

Некоторые функции агрегации могут быть вычислены для всего куба OLAP путем предварительного вычисления значений для каждой ячейки, а затем вычисления агрегации для свертки ячеек путем агрегации этих агрегатов, применяя алгоритм «разделяй и властвуй» к многомерной задаче для их эффективного вычисления. [12] Например, общая сумма свертки — это просто сумма подсумм в каждой ячейке. Функции, которые могут быть разложены таким образом, называются разложимыми функциями агрегации и включают COUNT, MAX, MIN,и SUM, которые могут быть вычислены для каждой ячейки, а затем напрямую агрегированы; они известны как саморазложимые функции агрегации. [13]

В других случаях агрегатная функция может быть вычислена путем вычисления вспомогательных чисел для ячеек, агрегирования этих вспомогательных чисел и, наконец, вычисления общего числа в конце; примеры включают AVERAGE(отслеживание суммы и количества, деление в конце) и RANGE(отслеживание максимума и минимума, вычитание в конце). В других случаях агрегатная функция не может быть вычислена без анализа всего набора сразу, хотя в некоторых случаях приближения могут быть вычислены; примеры включают DISTINCT COUNT, MEDIAN,и MODE; например, медиана набора не является медианой медиан подмножеств. Последние трудно реализовать эффективно в OLAP, так как они требуют вычисления агрегатной функции на основе базовых данных, либо вычисляя их онлайн (медленно), либо предварительно вычисляя их для возможных развертываний (большое пространство).

Типы

Системы OLAP традиционно классифицируются с использованием следующей таксономии. [14]

Многомерный OLAP (MOLAP)

MOLAP (многомерная онлайн-аналитическая обработка) — это классическая форма OLAP, иногда ее называют просто OLAP. MOLAP хранит эти данные в оптимизированном многомерном массиве, а не в реляционной базе данных.

Некоторые инструменты MOLAP требуют предварительного вычисления и хранения производных данных, таких как консолидации — операция, известная как обработка. Такие инструменты MOLAP обычно используют предварительно вычисленный набор данных, называемый кубом данных . Куб данных содержит все возможные ответы на заданный диапазон вопросов. В результате они очень быстро реагируют на запросы. С другой стороны, обновление может занять много времени в зависимости от степени предварительного вычисления. Предварительное вычисление также может привести к тому, что известно как взрыв данных.

Другие инструменты MOLAP, особенно те, которые реализуют функциональную модель базы данных, не выполняют предварительный расчет производных данных, а выполняют все вычисления по запросу, за исключением тех, которые были ранее запрошены и сохранены в кэше.

Преимущества MOLAP

Недостатки MOLAP

Продукция

Примерами коммерческих продуктов, использующих MOLAP, являются Cognos Powerplay, Oracle Database OLAP Option , MicroStrategy , Microsoft Analysis Services , Essbase , TM1 , Jedox и icCube.

Реляционный OLAP (ROLAP)

ROLAP работает напрямую с реляционными базами данных и не требует предварительных вычислений. Базовые данные и таблицы измерений хранятся в виде реляционных таблиц, а новые таблицы создаются для хранения агрегированной информации. Это зависит от специализированной схемы. Эта методология основана на манипулировании данными, хранящимися в реляционной базе данных, чтобы создать видимость традиционной функциональности OLAP по разделению и нарезке. По сути, каждое действие по разделению и нарезке эквивалентно добавлению предложения «WHERE» в оператор SQL. Инструменты ROLAP не используют предварительно вычисленные кубы данных, а вместо этого задают запрос стандартной реляционной базе данных и ее таблицам, чтобы вернуть данные, необходимые для ответа на вопрос. Инструменты ROLAP обладают возможностью задавать любые вопросы, поскольку методология не ограничивается содержимым куба. ROLAP также имеет возможность углубляться до самого низкого уровня детализации в базе данных.

Хотя ROLAP использует реляционную базу данных в качестве источника, как правило, база данных должна быть тщательно спроектирована для использования ROLAP. База данных, разработанная для OLTP, не будет хорошо функционировать как база данных ROLAP. Поэтому ROLAP все равно подразумевает создание дополнительной копии данных. Однако, поскольку это база данных, для заполнения базы данных можно использовать различные технологии.

Преимущества ROLAP

Недостатки ROLAP

Производительность ROLAP

В отрасли OLAP ROLAP обычно воспринимается как способный масштабироваться для больших объемов данных, но страдающий от более медленной производительности запросов по сравнению с MOLAP. OLAP Survey, крупнейший независимый опрос по всем основным продуктам OLAP, проводимый в течение 6 лет (с 2001 по 2006), неизменно обнаруживает, что компании, использующие ROLAP, сообщают о более медленной производительности, чем те, которые используют MOLAP, даже когда объемы данных принимаются во внимание.

Однако, как и в любом опросе, существует ряд тонких моментов, которые необходимо учитывать при интерпретации результатов.

Недостатки гибкости

Некоторые компании выбирают ROLAP, поскольку они намерены повторно использовать существующие таблицы реляционной базы данных — эти таблицы часто не будут оптимально спроектированы для использования OLAP. Превосходная гибкость инструментов ROLAP позволяет работать этому неоптимальному дизайну, но производительность страдает. Инструменты MOLAP, напротив, заставят данные повторно загрузиться в оптимальный дизайн OLAP.

Гибридный OLAP (HOLAP)

Нежелательный компромисс между дополнительными затратами на ETL и низкой производительностью запросов привел к тому, что большинство коммерческих инструментов OLAP теперь используют подход «гибридного OLAP» (HOLAP), который позволяет разработчику модели решать, какая часть данных будет храниться в MOLAP, а какая — в ROLAP.

В отрасли нет четкого соглашения относительно того, что представляет собой «гибридный OLAP», за исключением того, что база данных будет разделять данные между реляционным и специализированным хранилищем. [15] Например, для некоторых поставщиков база данных HOLAP будет использовать реляционные таблицы для хранения больших объемов подробных данных и использовать специализированное хранилище по крайней мере для некоторых аспектов меньших объемов более агрегированных или менее подробных данных. HOLAP устраняет недостатки MOLAP и ROLAP, объединяя возможности обоих подходов. Инструменты HOLAP могут использовать как предварительно рассчитанные кубы, так и реляционные источники данных.

Вертикальное разделение

В этом режиме HOLAP сохраняет агрегации в MOLAP для быстрой обработки запросов, а подробные данные — в ROLAP для оптимизации времени обработки куба .

Горизонтальное разбиение

В этом режиме HOLAP хранит часть данных, обычно более поздних (т.е. нарезанных по измерению времени) в MOLAP для быстрой производительности запросов, а более старые данные в ROLAP. Более того, мы можем хранить некоторые кубики в MOLAP, а другие в ROLAP, используя тот факт, что в большом кубоиде будут плотные и разреженные подрегионы. [16]

Продукция

Первым продуктом, предоставляющим хранилище HOLAP, был Holos , но эта технология также стала доступна в других коммерческих продуктах, таких как Microsoft Analysis Services , Oracle Database OLAP Option , MicroStrategy и SAP AG BI Accelerator. Гибридный подход OLAP объединяет технологии ROLAP и MOLAP, извлекая выгоду из большей масштабируемости ROLAP и более быстрых вычислений MOLAP. Например, сервер HOLAP может хранить большие объемы подробных данных в реляционной базе данных, в то время как агрегации хранятся в отдельном хранилище MOLAP. Службы Microsoft SQL Server 7.0 OLAP поддерживают гибридный сервер OLAP

Сравнение

Каждый тип имеет определенные преимущества, хотя между поставщиками услуг существуют разногласия относительно специфики этих преимуществ.

Другие типы

Иногда используются также следующие аббревиатуры, хотя они не так распространены, как приведенные выше:

API и языки запросов

В отличие от реляционных баз данных , которые имели SQL в качестве стандартного языка запросов, и широко распространенных API, таких как ODBC , JDBC и OLEDB , в мире OLAP долгое время не было такой унификации. Первым настоящим стандартным API была спецификация OLE DB для OLAP от Microsoft , которая появилась в 1997 году и представила язык запросов MDX . Несколько поставщиков OLAP — как серверных, так и клиентских — приняли ее. В 2001 году Microsoft и Hyperion анонсировали спецификацию XML для анализа , которая была одобрена большинством поставщиков OLAP. Поскольку она также использовала MDX в качестве языка запросов, MDX стал фактическим стандартом. [26] С сентября 2011 года LINQ можно использовать для запросов к кубам SSAS OLAP из Microsoft .NET. [27]

Продукция

История

Первым продуктом, выполнявшим запросы OLAP, был Express, выпущенный в 1970 году (и приобретенный Oracle в 1995 году у Information Resources). [28] Однако этот термин появился только в 1993 году, когда его придумал Эдгар Ф. Кодд , которого называют «отцом реляционной базы данных». Статья Кодда [1] стала результатом короткого консультационного задания, которое Кодд выполнял для бывшей Arbor Software (позже Hyperion Solutions , а в 2007 году была приобретена Oracle), в качестве своего рода маркетингового хода.

Компания выпустила свой собственный продукт OLAP, Essbase , годом ранее. В результате «двенадцать законов аналитической обработки онлайн» Кодда были явно связаны с Essbase. Возникли некоторые разногласия, и когда Computerworld узнал, что Кодд был оплачен Arbor, он отозвал статью. Рынок OLAP пережил сильный рост в конце 1990-х годов, и на рынок вышли десятки коммерческих продуктов. В 1998 году Microsoft выпустила свой первый сервер OLAP — Microsoft Analysis Services , который способствовал широкому внедрению технологии OLAP и вывел ее в мейнстрим.

Сравнение продуктов

OLAP-клиенты

Клиенты OLAP включают множество программ для работы с электронными таблицами, таких как Excel, веб-приложения, SQL, инструменты для панелей мониторинга и т. д. Многие клиенты поддерживают интерактивное исследование данных, где пользователи выбирают интересующие их измерения и меры. Некоторые измерения используются в качестве фильтров (для нарезки и разрезания данных), в то время как другие выбираются в качестве осей сводной таблицы или сводной диаграммы. Пользователи также могут изменять уровень агрегации (для детализации или свертывания) отображаемого представления. Клиенты также могут предлагать различные графические виджеты, такие как ползунки, географические карты, тепловые карты и многое другое, которые можно группировать и координировать как панели мониторинга. Обширный список клиентов отображается в столбце визуализации таблицы сравнения серверов OLAP .

Структура рынка

Ниже приведен список ведущих поставщиков OLAP в 2006 году с цифрами в миллионах долларов США . [29]

С открытым исходным кодом

Смотрите также

Ссылки

Цитаты

  1. ^ ab Codd EF; Codd SB & Salley CT (1993). "Предоставление OLAP (онлайновой аналитической обработки) пользователям-аналитикам: ИТ-мандат" (PDF) . Codd & Date, Inc . Получено 5 марта 2008 г. .[ постоянная мертвая ссылка ‍ ]
  2. ^ "OLAP Council White Paper" (PDF) . OLAP Council. 1997 . Получено 18 марта 2008 .
  3. ^ Дипак Парик (2007). Бизнес-аналитика для телекоммуникаций. CRC Press. С. 294 стр. ISBN 978-0-8493-8792-0. Получено 18 марта 2008 г. .
  4. ^ Апостолос Бенисис (2010). Управление бизнес-процессами: куб данных для анализа данных моделирования бизнес-процессов для принятия решений. VDM Verlag Dr. Müller eK стр. 204 стр. ISBN 978-3-639-22216-6.
  5. ^ Абдулла, Ахсан (ноябрь 2009 г.). «Анализ заболеваемости мучнистым червецом на хлопчатнике с использованием инструмента ADSS-OLAP (аналитическая обработка в режиме онлайн)». Компьютеры и электроника в сельском хозяйстве . 69 (1): 59–72. Bibcode : 2009CEAgr..69...59A. doi : 10.1016/j.compag.2009.07.003.
  6. ^ abcd O'Brien, JA, & Marakas, GM (2009). Информационные системы управления (9-е изд.). Бостон, Массачусетс: McGraw-Hill/Irwin.
  7. ^ Хари Майлваганам (2007). «Введение в OLAP – Slice, Dice and Drill!». Обзор хранилищ данных . Получено 18 марта 2008 г.
  8. ^ Уильямс, К., Гарза, В. Р., Такер, С., Маркус, А. М. (1994, 24 января). Многомерные модели повышают возможности просмотра. InfoWorld, 16(4)
  9. ^ MicroStrategy, Incorporated (1995). "The Case for Relational OLAP" (PDF) . Получено 20 марта 2008 г.
  10. ^ Сураджит Чаудхури и Умешвар Даял (1997). «Обзор хранилищ данных и технологии OLAP». SIGMOD Рек . 26 (1): 65. CiteSeerX 10.1.1.211.7178 . дои : 10.1145/248603.248616. S2CID  8125630. 
  11. ^ Грей, Джим ; Чаудхури, Сураджит; Лейман, Эндрю; Рейхарт, Дон; Венкатрао, Мурали; Пеллоу, Фрэнк; Пирахеш, Хамид (1997). "Куб данных: {A} реляционный оператор агрегации, обобщающий Group-By, Cross-Tab и промежуточные итоги". J. Data Mining and Knowledge Discovery . 1 (1): 29–53. arXiv : cs/0701155 . doi :10.1023/A:1009726021843. S2CID  12502175. Получено 20 марта 2008 г.
  12. ^ Чжан 2017, стр. 1.
  13. ^ Иисус, Бакеро и Алмейда 2011, 2.1 Разложимые функции, стр. 3–4.
  14. ^ Найджел Пендс (27 июня 2006 г.). "Архитектура OLAP". Отчет OLAP. Архивировано из оригинала 24 января 2008 г. Получено 17 марта 2008 г.
  15. ^ abc Bach Pedersen, Torben; S. Jensen, Christian (декабрь 2001 г.). «Технология многомерных баз данных». Distributed Systems Online . 34 (12): 40–46. doi :10.1109/2.970558. ISSN  0018-9162.
  16. ^ Kaser, Owen; Lemire, Daniel (2006). «Переупорядочение значений атрибутов для эффективной гибридной OLAP». Information Sciences . 176 (16): 2304–2336. arXiv : cs/0702143 . doi :10.1016/j.ins.2005.09.005.
  17. ^ «Эта неделя в аналитике графиков и сущностей». Datanami . 7 декабря 2016 г. Получено 8 марта 2018 г.
  18. ^ "Cambridge Semantics объявляет о поддержке AnzoGraph для Amazon Neptune и баз данных Graph". Тенденции и приложения баз данных . 15 февраля 2018 г. Получено 8 марта 2018 г.
  19. ^ Тао, Фангбо; Чжуан, Хунлей; Ю, Чи Ван; Ван, Ци; Кэссиди, Тейлор; Каплан, Лэнс; Восс, Клэр; Хан, Цзявэй (2016). «Многомерное фразовое суммирование в текстовых кубах» (PDF) .
  20. ^ Лием, Дэвид А.; Мурали, Санджана; Сигдель, Дибакар; Ши, Юй; Ван, Сюань; Шен, Цзямин; Чой, Ховард; Кауфилд, Джон Х.; Ван, Вэй; Пин, Пэйпэй; Хан, Цзявэй (1 октября 2018 г.). «Извлечение фраз из текстовых данных для анализа паттернов белков внеклеточного матрикса при сердечно-сосудистых заболеваниях». Американский журнал физиологии. Физиология сердца и кровообращения . 315 (4): H910–H924. doi :10.1152/ajpheart.00175.2018. ISSN  1522-1539. PMC 6230912. PMID 29775406  . 
  21. ^ Ли, С.; Ким, Н.; Ким, Дж. (2014). «Многомерный анализ и куб данных для неструктурированного текста и социальных сетей». Четвертая международная конференция IEEE 2014 года по большим данным и облачным вычислениям . С. 761–764. doi :10.1109/BDCloud.2014.117. ISBN 978-1-4799-6719-3. S2CID  229585.
  22. ^ Ding, B.; Lin, XC; Han, J.; Zhai, C.; Srivastava, A.; Oza, NC (декабрь 2011 г.). «Эффективный поиск по ключевым словам для ячеек Top-K в текстовом кубе». IEEE Transactions on Knowledge and Data Engineering . 23 (12): 1795–1810. doi :10.1109/TKDE.2011.34. S2CID  13960227.
  23. ^ Ding, B.; Zhao, B.; Lin, CX; Han, J.; Zhai, C. (2010). "TopCells: поиск по ключевым словам в агрегированных документах top-k в текстовом кубе". 2010 IEEE 26-я Международная конференция по инжинирингу данных (ICDE 2010) . стр. 381–384. CiteSeerX 10.1.1.215.7504 . doi :10.1109/ICDE.2010.5447838. ISBN  978-1-4244-5445-7. S2CID  14649087.
  24. ^ Lin, CX; Ding, B.; Han, K.; Zhu, F.; Zhao, B. (2008). «Текстовый куб: вычисление мер IR для анализа многомерной текстовой базы данных». Восьмая международная конференция IEEE по интеллектуальному анализу данных 2008 г. стр. 905–910. doi :10.1109/icdm.2008.135. ISBN 978-0-7695-3502-9. S2CID  1522480. {{cite book}}: |journal=проигнорировано ( помощь )
  25. ^ Лю, X.; Тан, K.; Хэнкок, J.; Хан, J.; Сонг, M.; Сюй, R.; Покорни, B. (21 марта 2013 г.). «Социальные вычисления, поведенческо-культурное моделирование и прогнозирование. SBP 2013. Конспект лекций по информатике». В Greenberg, AM; Kennedy, WG; Bos, ND (ред.). Подход текстового куба к человеческому, социальному и культурному поведению в потоке Twitter (7812-е изд.). Берлин, Гейдельберг: Springer. стр. 321–330. ISBN 978-3-642-37209-4.
  26. ^ Найджел Пендс (23 августа 2007 г.). "Комментарий: OLAP API wars". OLAP Report. Архивировано из оригинала 28 мая 2008 г. Получено 18 марта 2008 г.
  27. ^ «Поставщик SSAS Entity Framework для LINQ to SSAS OLAP».
  28. ^ Найджел Пендс (23 августа 2007 г.). «Истоки современных продуктов OLAP». Отчет OLAP. Архивировано из оригинала 21 декабря 2007 г. Получено 27 ноября 2007 г.
  29. ^ Найджел Пендсе (2006). "OLAP Market". OLAP Report . Получено 17 марта 2008 г.
  30. ^ Йегулалп, Сердар (11 июня 2015 г.). «LinkedIn заполняет еще одну нишу SQL-on-Hadoop». InfoWorld . Получено 19 ноября 2016 г. .
  31. ^ "Apache Doris". Github . Сообщество Apache Doris . Получено 5 апреля 2023 г.
  32. ^ "Внутрипроцессная система управления базами данных SQL OLAP". DuckDB . Получено 10 декабря 2022 г. .
  33. ^ Ананд, Чиллар (17 ноября 2022 г.). «Common Crawl On Laptop — Extracting Subset Of Data». Avil Page . Получено 10 декабря 2022 г.

Источники

Дальнейшее чтение