No Image

Что такое фиктивные данные

СОДЕРЖАНИЕ
0 просмотров
12 декабря 2019

Наличие «грязных» данных — одна из важнейших и трудно формализуемых проблем аналитических технологий вообще и ХД в частности. Очистка данных обязательна при их перегрузке в хранилище, и при разработке стратегии ETL этому уделяется большое внимание. Следует отметить, что, помимо очистки данных перед их загрузкой в хранилище, пользователь может выполнить дополнительную очистку средствами аналитической системы уже после выполнения запроса к ХД. Такое дублирование вполне оправданно по ряду причин.

  • В данных, извлекаемых из различных источников, могут содержаться проблемы, из-за которых выполнить загрузку данных в ХД будет невозможно.
  • Конечный пользователь чаще всего не имеет представления обо всех особенностях данных в источниках, из которых они извлекаются, и поэтому не может (и не должен) разрабатывать стратегию очистки.
  • Вторичная очистка данных, предусмотренная в аналитической системе, по своим методам и целям существенно отличается от очистки данных в процессе ETL. Целесообразность применения того или иного метода очистки данных, полученных в результате запроса из ХД, определяется пользователем, исходя из особенностей конкретной задачи анализа. При этом часто используется субъективное мнение аналитика, основанное на личном опыте. Например, одному специалисту гладкость ряда данных покажется недостаточной для решения определенной задачи анализа и он применит процедуру сглаживания для очистки от шумов или аномальных значений. В то же время другой аналитик скажет, что в результате сглаживания вместе с шумом и аномалиями подавлены изменения, несущие полезную информацию.
  • Некоторые виды ошибок (например, противоречия и аномальные значения) могут быть обнаружены только после консолидации данных. Действительно, нельзя сделать вывод, что некоторое значение является аномальным, пока не произведено его сравнение с соседними значениями.

Таким образом, первичная очистка данных в процессе ETL носит в большей степени технический характер. Ее основная задача — подготовить данные к загрузке в хранилище. Вторичная очистка в аналитической системе является пользовательской, она направлена на подготовку данных к решению конкретной аналитической задачи. Поэтому оба этапа очистки одинаково важны и необходимы.

Критерии оценки качества данных

Чтобы разработать методику очистки данных в процессе ETL, необходимо определить критерии оценки их качества. Одним из таких критериев является критичность ошибок. В этой связи данные могут быть разделены на три категории:

  • данные высокого качества, не нуждающиеся в очистке;
  • данные, содержащие критичные ошибки, из-за которых они в принципе не могут быть загружены в ХД (например, буква или пробел в числовом значении, неправильный разделитель целой и дробной частей числа и т.д.). То есть критичными являются ошибки, которые делают невозможной дальнейшую работу с данными;
  • данные, содержащие некритичные ошибки, которые не мешают их загрузке в ХД, но при этом данные являются некорректными с точки зрения их анализа (аномальные значения, пропуски, дубликаты, противоречия и т.д.). Некритичные ошибки могут быть исправлены в процессе анализа данных средствами аналитической системы.
  • Основные виды проблем в данных, из-за которых они нуждаются в очистке

    Существует несколько проблем, из-за которых данные нуждаются в очистке. Наиболее широко распространены проблемы, связанные с нарушением структуры данных:

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

    Для каждого структурного уровня данных — отдельной ячейки, записи, целой таблицы, отдельной БД или множества БД — характерны свои факторы, снижающие качество данных. Наиболее типичные ошибки, соответствующие структурным единицам БД, представлены в табл. 6.

    Таблица 6. Типичные ошибки, соответствующие структурным единицам БД

    Ячейка

    Запись

    Таблица

    Отдельная БД

    Множество БД

    Орфографические ошибки

    Противоречия между ячейками

    Дублирование записей

    Целостность данных

    Несоответствия структуры данных

    Пропуски в данных

    Фиктивные значения

    Одинаковые наименования различных атрибутов

    Логические несоответствия

    Противоречивые записи

    Противоречия

    Различное представление однотипных данных

    Закодированные значения

    Различная временная шкала

    Составные значения

    На уровне отдельной ячейки таблицы наиболее характерны следующие ошибки.

    Орфографические ошибки или опечатки могут привести к неправильному пониманию или искажению данных. Например, ошибка в названии фирмы приведет к появлению двух разных фирм с одинаковыми реквизитами, что вызовет противоречия, ошибки в отчетах и т.д.

    Пропуски данных — отсутствие данных в тех ячейках, где они должны быть. Пропуски могут быть вызваны ошибкой оператора или отсутствием соответствующей информации. Например, что означает отсутствие информации о продажах в супермаркете на определенную дату? Если в этот день магазин был закрыт, то есть продаж не было, в соответствующей ячейке должен стоять ноль. Если же магазин работал, то, скорее всего, имеет место ошибка оператора. Однако при автоматической загрузке огромного количества данных, что имеет место в большинстве корпоративных систем, разобраться с каждым отдельным случаем пропуска данных невозможно. Поэтому на этапе очистки данных в ETL необходимо разработать методику восстановления пропущенных данных, которая как минимум делала бы их корректными с точки зрения совместимости со структурой хранилища. Что касается корректности с точки зрения анализа, то большинство аналитических систем содержит средства восстановления пропущенных данных способом, который предпочтет аналитик (начиная от установки значения вручную до применения сложных статистических методов).

    Фиктивные значения — данные, не имеющие смысла, никак не связанные с описываемым ими бизнес-процессом. Подобная ситуация возможна, если оператор системы OLTP, не располагая необходимой информацией, ввел в ячейку произвольную последовательность символов. Оператор бывает вынужден это сделать, когда система не позволяет продолжать работу, пока соответствующая ячейка не будет заполнена. Так, если клиент забыл указать в анкете возраст, то оператор может ввести значение 0 или 999. При этом лучше, если значение явно «не лезет ни в какие ворота», поскольку в таком случае вероятность того, что оно будет принято за реальное, уменьшается. Вообще, обнаружить и отфильтровать фиктивные значения довольно трудно, поскольку понятие «смысл» является субъективным и не поддается формализации. Поэтому на этапе очистки данных средствами ETL можно выработать только общие формальные методы обнаружения фиктивных значений и борьбы с ними. Например, можно установить правило: «Если возраст клиента больше 150, то заменить его на значение 0». Когда при последующем анализе аналитик встретит такое значение, он поймет, что значение фиктивное, и примет меры к его замене на более правдоподобное (например, среднее по выборке). Существует и другой способ борьбы с фиктивными значениями. Можно проинструктировать операторов OLTP-систем или персонал, который занимается сводками данных в офисных приложениях, что при отсутствии реальных данных должен вводиться специальный код, который при обработке в процессе ETL распознавался бы как фиктивное значение. Затем к таким данным можно применить обработку, предписанную аналитиком. Наконец, если фиктивные значения являются аномальными (что чаще всего и имеет место), то они могут быть обнаружены и скорректированы средствами аналитической системы.

    Читайте также:  Постановка на учёт без прав

    Логические несоответствия возникают, если значение в ячейке не соответствует логическому смыслу поля таблицы. Например, вместо наименования фирмы указан ее банковский счет.

    Закодированные значения — сокращения, аббревиатуры, замена наименований числовыми кодами.

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

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

    На уровне таблицы основными проблемами являются дублирующие и противоречивые записи.

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

    • Увеличивается объем данных и, соответственно, время, требуемое на их загрузку и обработку.
    • Временные затраты при аналитической обработке дубликатов увеличиваются, при этом качество анализа не повышается.
    • Дубликаты могут ухудшить качество аналитических моделей, основанных на обучении (нейронные сети, деревья решений). Если значительный процент обучающей выборки для таких моделей будут составлять дублирующие записи, то результаты обучения могут ухудшиться.

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

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

    На уровне отдельной БД основной проблемой является нарушение целостности данных, которое заключается в том, что происходит рассогласование между различными объектами БД. Например, если в БД есть документ, сопровождающий сделку с каким-либо клиентом, то, как правило, при создании нового документа имя клиента не вводится вручную, а выбирается из списка клиентов, содержащегося в другой таблице БД и открывающегося при заполнении соответствующего поля. В результате документ содержит не собственно имя клиента, а ссылку на соответствующий объект другой таблицы. Если по какой-либо причине объект (то есть запись о клиенте) будет удален, то документ не сможет быть сформирован, из-за того что объект, на который имеется ссылка, оказывается недоступен.

    На уровне множества БД возникают проблемы, связанные с отличиями структуры данных в различных базах:

    • различные правила назначения имен полей (например, различное число символов, допустимых в имени поля, наличие пробелов, символов национальных алфавитов и т.д.);
    • различия в используемых типах полей;
    • одинаковые названия полей для разных атрибутов (например, в одном источнике данных поле Name содержит названия фирм, а в другом — наименования товаров);
    • различная временная шкала (например, данные, описывающие один и тот же бизнес-процесс, хранятся в двух разных файлах, но в одном из них представлена ежедневная информация, а в другом — еженедельная).

    Стратегия очистки данных должна разрабатываться с учетом особенностей предметной области, функционирования OLTP-систем и порядка сбора данных. Например, принимая решение о включении в процесс обработки данных ETL средств для борьбы с дубликатами, аналитик должен выяснить, могут ли в бизнес-процессе возникать идентичные объекты или события, происходящие в одном временном интервале. Если да, то две одинаковые записи, определяемые как дубликаты, могут описывать разные объекты или события. Очевидно, что в этом случае к обработке дубликатов следует подходить с осторожностью, чтобы не потерять полезную информацию.

    Кроме того, необходимо помнить, что полностью очистить данные удается очень редко. Существуют проблемы, которые не получается решить независимо от степени приложенных усилий. Бывают случаи, когда некорректное применение методов очистки данных только усугубляет ситуацию. Иногда использование очень сложных алгоритмов очистки увеличивает время переноса данных в ХД до неприемлемой величины. Поэтому не всегда следует стремиться к полной очистке данных. Лучше обеспечить компромисс между сложностью используемых алгоритмов, затратами на вычисление, временем, требуемым на очистку, и ее результатами. Если достоверность каких-то данных не влияет на результаты анализа, то от их очистки, возможно, следует вообще отказаться.

    НОВОСТИ ФОРУМА
    Рыцари теории эфира
    01.10.2019 — 05:20: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
    [center][Youtube]69vJGqDENq4[/Youtube][/center]
    [center]14:36[/center]
    Osievskii Global News
    29 сент. Отправлено 05:20, 01.10.2019 г.’ target=_top>Просвещение от Вячеслава Осиевского — Карим_Хайдаров.
    30.09.2019 — 12:51: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
    [center][Ok]376309070[/Ok][/center]
    [center]11:03[/center] Отправлено 12:51, 30.09.2019 г.’ target=_top>Просвещение от Дэйвида Дюка — Карим_Хайдаров.
    30.09.2019 — 11:53: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ — Upbringing, Inlightening, Education ->
    [center][Youtube]VVQv1EzDTtY[/Youtube][/center]
    [center]10:43[/center]

    интервью Раввина Борода https://cursorinfo.co.il/all-news/rav.
    мой телеграмм https://t.me/peshekhonovandrei
    мой твиттер https://twitter.com/Andrey54708595
    мой инстаграм https://www.instagram.com/andreipeshekhonow/

    [b]Мой комментарий:
    Андрей спрашивает: Краснодарская синагога — это что, военный объект?
    — Да, военный, потому что имеет разрешение от Росатома на манипуляции с радиоактивными веществами, а также иными веществами, опасными в отношении массового поражения. Именно это было выявлено группой краснодарцев во главе с Мариной Мелиховой.

    [center][Youtube]CLegyQkMkyw[/Youtube][/center]
    [center]10:22 [/center]

    Доминико Риккарди: Россию ждёт страшное будущее (хотелки ЦРУ):
    https://tainy.net/22686-predskazaniya-dominika-rikardi-o-budushhem-rossii-sdelannye-v-2000-godu.html

    Завещание Алена Даллеса / Разработка ЦРУ (запрещено к ознакомлению Роскомнадзором = Жид-над-рус-надзором)
    http://av-inf.blogspot.com/2013/12/dalles.html

    [center][b]Сон разума народа России [/center]

    [center][Youtube]CLegyQkMkyw[/Youtube][/center]
    [center]10:22 [/center]

    Доминико Риккарди: Россию ждёт страшное будущее (хотелки ЦРУ):
    https://tainy.net/22686-predskazaniya-dominika-rikardi-o-budushhem-rossii-sdelannye-v-2000-godu.html

    Завещание Алена Даллеса / Разработка ЦРУ (запрещено к ознакомлению Роскомнадзором = Жид-над-рус-надзором)
    http://av-inf.blogspot.com/2013/12/dalles.html

    [center][b]Сон разума народа России [/center]

    Русско-английский перевод ФИКТИВНЫЕ ДАННЫЕ НАБЛЮДЕНИЙ

    метео pseudo-observed data

    Большой Русско-Английский словарь. New big Russian-English dictionary. 2012

    Еще значения слова и перевод ФИКТИВНЫЕ ДАННЫЕ НАБЛЮДЕНИЙ с английского на русский язык в англо-русских словарях и с русского на английский язык в русско-английских словарях.

    More meanings of this word and English-Russian, Russian-English translations for the word «ФИКТИВНЫЕ ДАННЫЕ НАБЛЮДЕНИЙ» in dictionaries.

    • ДАННЫЕ — pl. data, particulars. information, evidence, findings; выходные данные, output data; приводить данные, cite data
      Russian-English Dictionary of the Mathematical Sciences
    • ДАННЫЕ — Data
      Русско-Американский Английский словарь
    • ДАННЫЕ — 1. ( сведения ) data, facts; information sg. цифровые данные — figures полученные данные — cite data для этого есть …
      Англо-Русско-Английский словарь общей лексики — Сборник из лучших словарей
    • ДАННЫЕ — мн. ч.; скл. как прил. 1) ( сведения) data, facts; information ед. Это предположение было сделано на основании данных, почерпнутых …
      Русско-Английский словарь общей тематики
    • ДАННЫЕ — 1) finding 2) reading
      Новый Русско-Английский биологический словарь
    • НАБЛЮДЕНИЙ — Supervision(observations)
      Russian Learner’s Dictionary
    • ДАННЫЕ — The data
      Russian Learner’s Dictionary
    • ДАННЫЕ — data
      Russian Learner’s Dictionary
    • ДАННЫЕ — мн. скл. как прил. 1. ( сведения ) data, facts; information sg. цифровые данные — figures полученные данные — cite …
      Русско-Английский словарь
    • ДАННЫЕ — мн. скл. как прил. 1. ( сведения ) data, facts; information sg. цифровые данные — figures полученные данные — cite …
      Russian-English Smirnitsky abbreviations dictionary
    • НАБЛЮДЕНИЙ — Supervision(observations)
      Russian-English Edic
    • ДАННЫЕ — data , readings
      Russian-English Edic
    • ДАННЫЕ — data
      Russian-English Edic
    • ДАННЫЕ — data, information, intelligence, reading
      Русско-Английский словарь по машиностроению и автоматизации производства
    • ДАННЫЕ — мн. ч. ; скл. как прил. 1) ( сведения ) data, facts; information ед. Это предположение было сделано на основании …
      Русско-Английский краткий словарь по общей лексике
    • ДАННЫЕ — evidence, factor
      Русско-Английский словарь по строительству и новым строительным технологиям
    • ДАННЫЕ — Inputs
      Британский Русско-Английский словарь
    • ДАННЫЕ — Datum
      Британский Русско-Английский словарь
    • ДАННЫЕ — Data
      Британский Русско-Английский словарь
    • ДАННЫЕ — background, data, evidence, facts, material, record, showing
      Русско-Английский экономический словарь
    • ДАННЫЕ — мн. 1. data, facts; information sg. цифровые
    Читайте также:  Номер в базе недвижимости

    figures; по всем (имеющимся)

    ым according to information (available); мы имеем

    , что. we are in …
    Русско-Английский словарь — QD

  • ДАННЫЕ — data
    Русско-Английский юридический словарь
  • ДАННЫЕ — см. тж. большое количество данных ; выборочные
  • ; значительное количество сведений о ; из . можно …
    Русско-Английский научно-технический словарь переводчика

  • ДАННЫЕ — мн. data — антропометрические данные — данные испытаний — данные технические — данные эксплуатационные — регулировочные данные — сравнительные данные — технические данные — эксплуатационные данные
    Русско-Aнглийский автомобильный словарь
  • ДАННЫЕ — 1) data 2) information
    Русско-Английский толковый словарь терминов и сокращений по ВТ, Интернету и программированию
  • ДАННЫЕ — pl data
    Russian-English WinCept Glass dictionary
  • ДАННЫЕ — см. тж. информация ; результаты The data on the missions and characteristics of a great many US satellites are not …
    Русско-Английский словарь идиом по космонавтике
  • ДАННЫЕ — evidence for..
    Русско-Английский биологический словарь
  • ДАННЫЕ — мн. скл. как прил. 1) (сведения) data, facts information ед. по более полным данным – according to fuller information согласно …
    Большой Русско-Английский словарь
  • ДАННЫЕ — данные igiven data
    Русско-Английский словарь Сократ
  • DATA — сущ.; мн. от datum 1) мн. от datum 2) часто как ед. данные, факты, сведения; информация actual data ≈ фактические …
    Большой Англо-Русский словарь
  • SPREAD LOCATION — сейсм. 1. определение местоположения системы наблюдений 2. местоположение системы наблюдений
    Большой Англо-Русский словарь
  • SET OF OBSERVATIONS — мат. серия наблюдений; набор наблюдений
    Большой Англо-Русский словарь
  • PSEUDO OBSERVATIONS — 1. фиктивные наблюдения 2. данные наблюдений, полученные на модели
    Большой Англо-Русский словарь
  • PSEUDO-OBSERVED DATA — метео фиктивные данные наблюдений (полученные из модели)
    Большой Англо-Русский словарь
  • PAPER — 1. сущ. 1) бумага; лист бумаги blank paper ≈ чистая, неисписанная бумага to commit to paper ≈ записывать glossy paper …
    Большой Англо-Русский словарь
  • OBSERVED — сущ. (the observed) предмет наблюдений the observed of all observers ≈ центр всеобщего внимания (специальное) полученный путем наблюдения, исследования — …
    Большой Англо-Русский словарь
  • OBSERVATION — 1. сущ. 1) соблюдение (закона, обычаев и т. п.) Syn : observance 2) а) наблюдение empirical observation ≈ эмпирическое наблюдение …
    Большой Англо-Русский словарь
  • KITES — Дутые kites: fly
  • использовать фиктивные чеки для получения средств до их инкассации kites: fly

    использовать фиктивные чеки для …
    Большой Англо-Русский словарь

  • KITE — 1. сущ. 1) зоол. коршун, сокол, ястреб и т. д. (птицы семейства Accipitridae) 2) а) хищник (о человеке — тот, …
    Большой Англо-Русский словарь
  • FLY A KITE — 1) пускать воздушного змея 2) перен. пускать пробный шар, зондировать почву, выяснять обстановку 3) коммерч.; сл. пытаться получить деньги под …
    Большой Англо-Русский словарь
  • FICTITIOUS EQUATIONS — фиктивные уравнения
    Большой Англо-Русский словарь
  • FICTIONAL — прил. вымышленный; беллетристический вымышленный, выдуманный беллетристический > * parts of territory (юридическое) фиктивные /условные/ части территории (судно, самолет и т. …
    Большой Англо-Русский словарь
  • BOGUS OBSERVATIONS — 1. фиктивные наблюдения 2. данные наблюдении, полученные на модели
    Большой Англо-Русский словарь
  • PAPER — paper.ogg 1. ʹpeıpə n 1. бумага brown ruled paper — обёрточная линованная бумага music paper — нотная бумага section paper …
    Англо-Русско-Английский словарь общей лексики — Сборник из лучших словарей
  • OBSERVATION — observation.ogg ͵ɒbzəʹveıʃ(ə)n n 1. 1> наблюдение observation of fire — воен. наблюдение за ведением огня to keep under observation — …
    Англо-Русско-Английский словарь общей лексики — Сборник из лучших словарей
  • FLY A KITE — пытаться получить деньги под фиктивные векселя <см. тж. kite 3>
    Англо-Русско-Английский словарь общей лексики — Сборник из лучших словарей
  • FICTIONAL — fictional.ogg ʹfıkʃ(ə)nəl a 1. вымышленный, выдуманный 2. беллетристический fictional parts of territory — юр. фиктивные /условные/ части территории ( судно, …
    Англо-Русско-Английский словарь общей лексики — Сборник из лучших словарей
  • PSEUDO-OBSERVED DATA — метео фиктивные данные наблюдений ( полученные из модели )
    Большой Англо-Русский политехнический словарь
  • PSEUDO OBSERVATIONS — 1) фиктивные наблюдения 2) данные наблюдений, полученные на модели
    Большой Англо-Русский политехнический словарь
  • BOGUS OBSERVATIONS — 1) фиктивные наблюдения 2) данные наблюдении, полученные на модели
    Большой Англо-Русский политехнический словарь
  • PSEUDO-OBSERVED DATA — метео фиктивные данные наблюдений (полученные из модели)
    Большой Англо-Русский политехнический словарь — РУССО
  • PSEUDO OBSERVATIONS — 1) фиктивные наблюдения 2) данные наблюдений, полученные на модели
    Большой Англо-Русский политехнический словарь — РУССО
  • BOGUS OBSERVATIONS — 1) фиктивные наблюдения 2) данные наблюдении, полученные на модели
    Большой Англо-Русский политехнический словарь — РУССО
  • FICTITIOUS DATA — матем. фиктивные данные
    Англо-Русский научно-технический словарь
  • FLY A KITE — 1) пускать воздушного змея 2) перен. пускать пробный шар, зондировать почву, выяснять обстановку 3) коммерч.; сленг пытаться получить деньги под …
    Англо-Русский словарь Tiger
  • DUMMY INDUSTRIES — фиктивные отрасли
    Англо-Русский словарь Tiger
  • DATA — data сущ.; мн. ч.1) мн. от datum 2) часто как ед. данные, факты, сведения; информация Satellites collect data on weather …
    Англо-Русский словарь Tiger
  • ARTIFICIAL TRANSACTIONS — фиктивные (мнимые) сделки (операции) (между филиалами одной и той же фирмы)
    Англо-Русский словарь Tiger
  • CAMPAIGN — (n) кампания; поход; страда; фиктивные действия биржевых спекулянтов
    English-Russian Lingvistica’98 dictionary
  • PAPER — 1. [ʹpeıpə] n 1. бумага brown [ruled]
  • Читайте также:  Возврат жкх ветеранам труда

    — обёрточная [линованная] бумага music

    — нотная бумага section

    — …
    Новый большой Англо-Русский словарь — Апресян, Медникова
    OBSERVATION — n 1. 1) наблюдение

    of fire — воен. наблюдение за ведением огня to keep under

    — а) держать …
    Новый большой Англо-Русский словарь — Апресян, Медникова
    FICTIONAL — a 1. вымышленный, выдуманный 2. беллетристический ♢

    parts of territory — юр. фиктивные /условные/ части территории ( судно, самолёт …
    Новый большой Англо-Русский словарь — Апресян, Медникова

  • PAPER — 1. ʹpeıpə n 1. бумага brown ruled paper — обёрточная линованная бумага music paper — нотная бумага section paper — …
    Большой новый Англо-Русский словарь
  • Ранее мы уже публиковали статью о том, как генерировать фиктивные данные при помощи Mimesis — библиотеки для языка программирования Python. Статья, которую вы читаете является продолжением предыдущей, потому мы не будем приводить основ работы с библиотекой. Если вы пропустили статью, поленились прочитать или просто не захотели, то, вероятно, захотите сейчас, ибо эта статья предполагает, что читатель уже знаком с основами библиотеки. В этой части статьи мы будем говорить о best practice, расскажем о нескольких, на наш взгляд, полезных особенностях библиотеки.

    Remarque

    Прежде всего хотелось бы отметить, что Mimesis не разрабатывалась для использования с конкретной базой данных или ORM. Основная задача, которую библиотека решает — это предоставление валидных данных. По этой причине, строгих правил работы с библиотекой нет, но есть рекомендации, которые помогут держать ваше тестовое окружение в порядке и будут препятствовать росту энтропии в проекте. Рекомендации довольно просты и полностью соответствуют духу Python (если это не так, то ждем замечаний).

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

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

    Функции, выполняющие генерацию данных и их запись в БД, необходимо держать рядом с моделями, а еще лучше, как статические методы модели к которой они относятся, по примеру метода _bootstrap() из предыдущей статьи. Это нужно во избежание беготни по файлам, когда меняется структура модели и необходимо добавить какое-то новое поле. Модель Patient() из предыдущей статьи хорошо демонстрирует идею:

    Имейте в виду, что пример выше — это модель Flask-приложения, которое использует SQLAlchemy. Организация генераторов фиктивных данных для приложений, созданных с использованием других фреймворков происходит аналогичным образом.

    Создание объектов

    Если ваше приложение ожидает данные на одном конкретном языке и только на нем, то лучше всего использовать класс Generic() , предоставляющий доступ ко всем классам-провайдерам через один единственный объект, а не плодить множество экземпляров классов-провайдеров по отдельности. Используя Generic() вы избавитесь от лишних строк кода.

    В то же время верно:

    Т.е импортирование классов-провайдеров по отдельности имеет смысл, только, если вы ограничиваетесь лишь теми данными, которыми располагает, импортированный вами класс, в остальных случаях рекомендуется использовать Generic() .

    Запись данных в БД

    Если вам нужно сгенерировать данные и записать их в БД, то настоятельно рекомендуем генерировать данные порциями, а не разом 600k . Необходимо помнить, что могут быть какие-то ограничения со стороны базы данных, ORM и т.д. Чем меньше порции данных, генерируемые для записи, тем быстрее запись.

    Загрузка изображений

    Класс Internet() располагает несколькими методами, которые генерируют ссылки на изображения. Для тестирования вполне достаточно ссылок на изображения, расположенных на удаленных ресурсах, однако, если вы все же хотите иметь набор случайных изображений локально, то вы сможете загружать изображения, сгенерированные соответствующими методами класса Internet() при помощи функции download_image() из модуля utils :

    Пользовательские провайдеры

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

    Тут все просто и понятно без комментариев, потому уточним лишь один момент — атрибут name , класса Meta — это то название класса, через которое будет осуществляться доступ к методам пользовательского класса-провайдера. По умолчанию название класса — это имя класса в нижнем регистре.

    Builtin providers

    Большинство стран, где тот или иной язык является официальным, имеют данные, которые характерны только для этих стран. К примеру CPF для Бразилии, SSN для США. Такого рода данные могут причинять неудобства и нарушать порядок (или как минимум раздражать) тем, что будут присутствовать во всех объектах, независимо от выбранного языкового стандарта. Вы можете сами убедиться в сказанном, если посмотрите на пример того, как это выглядело бы (код работать не будет):

    Думаю все согласятся с тем, что это выглядит совсем нехорошо. Мы, будучи перфекционистами, позаботились о том, чтобы бразильский CPF не беспокоил "поляка" и по этой причине классы-провайдеры, предоставляющие такого рода специфичные для конкретных локалей данные вынесены в отдельный подпакет ( mimesis.builtins ), чтобы сохранить общую для всех языков структуру классов и их объектов.

    Так это работает:

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

    В каких данные чаще всего возникает необходимость в вашей работе? Что в библиотеке упустили и что необходимо немедленно добавить? Мы были бы очень рады услышать ваши пожелания/рекомендации/замечания.

    Ссылка на проект: тут.
    На документацию ссылка: тут.
    На первую часть статьи: тут.

    На этом у меня все, друзья. Вам удачных тестов и да пребудет с вами сила!

    Комментировать
    0 просмотров
    Комментариев нет, будьте первым кто его оставит

    Это интересно
    No Image Советы юриста
    0 комментариев
    No Image Советы юриста
    0 комментариев
    No Image Советы юриста
    0 комментариев
    No Image Советы юриста
    0 комментариев