что такое профилирование данных

СОДЕРЖАНИЕ

Вступление

Профилирование данных относится к анализу информации для использования в хранилище данных с целью прояснения структуры, содержания, взаимосвязей и правил получения данных. Профилирование помогает не только понимать аномалии и оценивать качество данных, но также обнаруживать, регистрировать и оценивать метаданные предприятия. Результат анализа используется для определения пригодности исходных систем-кандидатов, что обычно дает основу для раннего принятия / неприемлемого решения, а также для выявления проблем для последующего проектирования решения.

Как проводится профилирование данных

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

Когда проводится профилирование данных

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

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

Преимущества и примеры

Источник

Профилирование: измерение и анализ

что такое профилирование данных. Смотреть фото что такое профилирование данных. Смотреть картинку что такое профилирование данных. Картинка про что такое профилирование данных. Фото что такое профилирование данных

Привет, я Тони Альбрехт (Tony Albrecht), инженер в Riot. Мне нравится профилировать и оптимизировать. В этой статье я расскажу об основах профилирования, а также проанализирую пример С++-кода в ходе его профилирования на Windows-машине. Мы начнём с самого простого и будем постепенно углубляться в потроха центрального процессора. Когда нам встретятся возможности оптимизировать — мы внедрим изменения, а в следующей статье разберём реальные примеры из кодовой базы игры League of Legends. Поехали!

Обзор кода

Сначала взглянем на код, который собираемся профилировать. Наша программа — это простой маленький OpenGL-рендерер, объектно ориентированное, иерархические дерево сцены (scene tree). Я находчиво назвал основной объект Object’ом — всё в сцене наследуется от одного из этих базовых классов. В нашем коде от Object’а наследуются лишь Node, Cube и Modifier.

что такое профилирование данных. Смотреть фото что такое профилирование данных. Смотреть картинку что такое профилирование данных. Картинка про что такое профилирование данных. Фото что такое профилирование данных

Cube — это Object, который рендерит себя на экране в виде куба. Modifier — это Object, который «живёт» в дереве сцены и, будучи Updated, преобразует добавленные нему Object’ы. Node — это Object, который может содержать другие Object’ы.

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

что такое профилирование данных. Смотреть фото что такое профилирование данных. Смотреть картинку что такое профилирование данных. Картинка про что такое профилирование данных. Фото что такое профилирование данных

Согласен, предложенный код — не лучшая реализация дерева сцены, но ничего страшного: этот код нужен именно для последующей оптимизации. По сути, это прямое портирование примера для PlayStation3®, который я написал в 2009-м для анализа производительности в работе Pitfalls of Object Oriented Programming. Можно отчасти сравнить нашу сегодняшнюю статью со статьёй 9-летней давности и посмотреть, применимы ли к современным аппаратным платформам те уроки, что мы извлекли когда-то для PS3.

Но вернёмся к нашим кубикам. На приведённой выше гифке показаны около 55 тысяч вращающихся кубиков. Обратите внимание, что я профилирую не рендеринг сцены, а только анимацию и отбрасывание (culling) при передаче на рендеринг. Библиотеки, задействованные для создания примера: Dear Imgui и Vectormath от Bullet, обе бесплатны. Для профилирования я использовал AMD Code XL и простой контрольно-измерительный (instrumented) профилировщик, на скорую руку сооружённый для этой статьи.

Прежде чем переходить к делу

Единицы измерения

Сначала я хочу обсудить измерение производительности. Зачастую в играх в качестве метрики используются кадры в секунду (FPS). Это неплохой индикатор производительности, однако он бесполезен при анализе частей кадра или сравнении улучшений от разных оптимизаций. Допустим, «игра теперь работает на 20 кадров в секунду быстрее!» — это вообще насколько быстрее?

Зависит от ситуации. Если у нас было 60 FPS (или 1000/60 = 16,666 миллисекунд на кадр), а теперь стало 80 FPS (1000/80 = 12,5 мс на кадр), то наше улучшение равно 16,666 мс – 12,5 мс = 4,166 мс на кадр. Это хороший прирост.

Но если у нас было 20 FPS, а теперь стало 40 FPS, то улучшение уже равно (1000/20 – 1000/40) = 50 мс – 25 мс = 25 мс на кадр! Это мощный прирост производительности, который может превратить игру из «неиграбельной» в «приемлемую». Проблема метрики FPS в том, что она относительна, так что мы будем всегда использовать миллисекунды. Всегда.

Проведение замеров

Существует несколько типов профилировщиков, каждый со своими достоинствами и недостатками.

Контрольно-измерительные профилировщики

Для контрольно-измерительных (instrumented) профилировщиков программист должен вручную пометить фрагмент кода, производительность которого нужно измерить. Эти профилировщики засекают и сохраняют время начала и окончания работы профилируемого фрагмента, ориентируясь на уникальные маркеры. Например:

В данном случае FT_PROFILE_FN создаёт объект, фиксирующий время своего создания, а затем и уничтожения при выпадении из области видимости. Эти моменты времени вместе с именем функции хранятся в каком-нибудь массиве для последующего анализа и визуализации. Если постараться, то можно реализовать визуализацию в коде или — чуть проще — в инструменте вроде Chrome tracing.

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

что такое профилирование данных. Смотреть фото что такое профилирование данных. Смотреть картинку что такое профилирование данных. Картинка про что такое профилирование данных. Фото что такое профилирование данных

На этой иллюстрации каждая цветная плашка соответствует какой-то функции. Плашки, расположенные непосредственно под другими плашками, обозначают функции, которые вызываются «вышерасположенными» функциями. Длина плашки пропорциональна длительности исполнения функции.

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

Семплирующие профилировщики

Семплирующие (sampling) профилировщики запрашивают состояние исполнения того процесса, который вы хотите профилировать. Они периодически сохраняют счётчик программы (Program Counter, PC), показывающий, какая инструкция сейчас исполняется, а также сохраняют стек, благодаря чему можно узнать, какие функции вызвала та функция, что содержит текущую инструкцию. Вся эта информация полезна, поскольку функция или строки с наибольшим количеством семплов окажутся самой медленной функцией или строками. Чем дольше работает семплирующий профилировщик, тем больше собирается семплов инструкций и стеков, что улучшает результаты.

что такое профилирование данных. Смотреть фото что такое профилирование данных. Смотреть картинку что такое профилирование данных. Картинка про что такое профилирование данных. Фото что такое профилирование данных

Семплирующие профилировщики позволяют собирать очень низкоуровневые характеристики производительности программы и не требуют ручного вмешательства, как в случае с контрольно-измерительными профилировщиками. Кроме того, они автоматически покрывают всё состояние исполнения вашей программы. У этих профилировщиков есть два основных недостатка: они не слишком полезны для определения всплесков по каждому кадру, а также не позволяют узнать, когда была вызвана определённая функция относительно других функций. То есть мы получаем меньше информации об иерархических вызовах по сравнению с хорошим контрольно-измерительным профилировщиком.

Специализированные профилировщики

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

Профилировщики, предназначенные для конкретных игр

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

Профилирование

Профилирование приложения без сравнительного эталона не имеет смысла, поэтому при оптимизации необходимо иметь под рукой надёжный тестовый сценарий. Это не так просто, как кажется. Современные компьютеры выполняют не одно лишь ваше приложение, а одновременно десятки, если не сотни других процессов, постоянно переключаясь между ними. То есть другие процессы могут замедлить профилируемый вами процесс в результате конкуренции за обращение к устройствам (например, несколько процессов пытаются считать с диска) или за ресурсы процессора/видеокарты. Так что для получения хорошей отправной точки вам нужно прогнать код через несколько операций профилирования, прежде чем вы хотя бы приступите к задаче. Если результаты прогонов будут сильно различаться, то придётся разобраться в причинах и избавиться от вариативности или хотя бы снизить её.

Добившись наименьшего возможного разброса результатов, не забывайте, что небольшие улучшения (меньше имеющейся вариативности) будет трудно измерить, потому что они могут затеряться в «шуме» системы. Допустим, конкретная сцена в игре отображается в диапазоне 14—18 мс на кадр, в среднем это 16 мс. Вы потратили две недели на оптимизацию какой-нибудь функции, перепрофилировали и получили 15,5 мс на кадр. Стало ли быстрее? Чтобы выяснить точно, вам придётся прогнать игру много раз, профилируя эту сцену и вычисляя среднеарифметическое значение и строя график тренда. В описанном здесь приложении мы измеряем сотни кадров и усредняем результаты, чтобы получить достаточно надёжное значение.

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

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

Профилируем код

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

Когда я выполнил код и записал данные из измеренного профиля, то получил в Chrome://tracing такую картину:

что такое профилирование данных. Смотреть фото что такое профилирование данных. Смотреть картинку что такое профилирование данных. Картинка про что такое профилирование данных. Фото что такое профилирование данных

Это профиль одного кадра. Здесь мы видим относительную длительность работы каждого вызова функции. Обратите внимание, что можно посмотреть и порядок выполнения. Если бы я измерил функции, которые вызываются этими вызовами функций, то они отобразились бы под плашками родительских функций. К примеру, я измерил Node::Update() и получил такую рекурсивную структуру вызовов:

что такое профилирование данных. Смотреть фото что такое профилирование данных. Смотреть картинку что такое профилирование данных. Картинка про что такое профилирование данных. Фото что такое профилирование данных

Длительность исполнения одного кадра этого кода при измерении различается на пару миллисекунд, так что мы берём среднеарифметическое как минимум по нескольким сотням кадров и сравниваем с исходным эталоном. В данном случае измерено 297 кадров, среднее значение — 17,5 мс, одни кадры выполнялись до 19 мс, а другие — чуть меньше 16,5 мс, хотя в каждом из них выполняется практически одно и то же. Такова неявная вариативность кадров. Многократный прогон и сравнение результатов устойчиво дают нам около 17,5 мс, так что это значение можно считать надёжной исходной точкой.

что такое профилирование данных. Смотреть фото что такое профилирование данных. Смотреть картинку что такое профилирование данных. Картинка про что такое профилирование данных. Фото что такое профилирование данных

Если отключить в коде контрольные метки и прогнать его через семплирующий профилировщик AMD CodeXL, то получим такую картину:

что такое профилирование данных. Смотреть фото что такое профилирование данных. Смотреть картинку что такое профилирование данных. Картинка про что такое профилирование данных. Фото что такое профилирование данных

Если мы проанализируем пять самых «востребованных» функций, то получим:

что такое профилирование данных. Смотреть фото что такое профилирование данных. Смотреть картинку что такое профилирование данных. Картинка про что такое профилирование данных. Фото что такое профилирование данных

Matrix::operator*

Если с помощью семплирующего профилировщика проанализировать код, отвечающий за умножение, то можно выяснить «стоимость» выполнения каждой строки.

что такое профилирование данных. Смотреть фото что такое профилирование данных. Смотреть картинку что такое профилирование данных. Картинка про что такое профилирование данных. Фото что такое профилирование данных

К сожалению, длина кода матричного умножения — всего одна строка (ради эффективности), так что нам этот результат мало что даёт. Или всё-таки не так уж мало?

Если взглянуть на ассемблер, можно выявить пролог и эпилог функции.

что такое профилирование данных. Смотреть фото что такое профилирование данных. Смотреть картинку что такое профилирование данных. Картинка про что такое профилирование данных. Фото что такое профилирование данных

Это стоимость внутренней инструкции вызова функции. В прологе задаётся новое пространство стека (ESP — текущий указатель стека, EBP — базовый указатель для текущего фрейма стека), а в эпилоге выполняется очистка и возврат. При каждом вызове функции, которая не инлайнена и использует какое-либо пространство стека (т. е. имеет локальную переменную), все эти инструкции могут быть вставлены и вызваны.

Давайте развернём остальную часть функции и посмотрим, что на самом деле выполняет матричное умножение.

что такое профилирование данных. Смотреть фото что такое профилирование данных. Смотреть картинку что такое профилирование данных. Картинка про что такое профилирование данных. Фото что такое профилирование данных

Ого, куча кода! И это лишь первая страница. Полная функция занимает больше килобайта кода с 250—300 инструкциями! Проанализируем начало функции.

что такое профилирование данных. Смотреть фото что такое профилирование данных. Смотреть картинку что такое профилирование данных. Картинка про что такое профилирование данных. Фото что такое профилирование данных

Строка над выделенной синим цветом занимает около 10 % общего времени выполнения. Почему она выполняется гораздо медленнее соседних? Эта MOVSS-инструкция берёт из памяти по адресу eax+34h значение с плавающей запятой и кладёт в регистр xmm4. Строкой выше то же самое делается с регистром xmm1, но гораздо быстрее. Почему?

Всё дело в промахе кеша.

Разберёмся подробнее. Семплирование отдельных инструкций применимо в самых разных ситуациях. Современные процессоры в любой момент выполняют несколько инструкций, и в течение одного тактового цикла немало инструкций может быть пересортировано (retire). Даже семплирование на основе событий может приписывать события не той инструкции. Так что при анализе семплирования ассемблера необходимо руководствоваться какой-то логикой. В нашем примере наиболее семплированная инструкция может не быть самой медленной. Мы лишь можем с определённой долей уверенности говорить о медленной работе чего-то, относящегося к этой строке. А поскольку процессор выполняет ряд MOV’ов в память и из неё, то предположим, что как раз эти MOV’ы и виноваты в низкой производительности. Чтобы удостовериться в этом, можно прогнать профиль с включённым семплированием на основе событий для промахов кеша и посмотреть на результат. Но пока что доверимся инстинктам и прогоним профиль исходя из гипотезы о промахе кеша.

Пропуск кеша L3 занимает более 100 циклов (в некоторых случаях — несколько сотен циклов), а промах кеша L2 — около 40 циклов, хотя всё это сильно зависит от процессора. К примеру, x86-инструкции занимают от 1 примерно до 100 циклов, при этом большинство — менее 20 циклов (некоторые инструкции деления на некотором железе работают довольно медленно). На моём Core i7 инструкции умножения, сложения и даже деления занимали по несколько циклов. Инструкции попадают в конвейер, так что одновременно обрабатывается несколько инструкций. Это значит, что один промах кеша L3 — загрузка напрямую из памяти — по времени может занимать исполнение сотен инструкций. Проще говоря, чтение из памяти — очень медленный процесс.

что такое профилирование данных. Смотреть фото что такое профилирование данных. Смотреть картинку что такое профилирование данных. Картинка про что такое профилирование данных. Фото что такое профилирование данных

Modifier::Update()

Итак, мы видим, что обращение к памяти замедляет исполнение нашего кода. Давайте вернёмся назад и посмотрим, что в коде приводит к этому обращению. Контрольно-измерительный профилировщик показывает, что Node::Update() выполняется медленно, а из отчёта семплирующего профилировщика о стеке очевидно, что функция Modifier::Update() особенно нетороплива. С этого и начнём оптимизацию.

Modifier::Update() проходит через вектор указателей к Object’ам, берёт их матрицу преобразования (transform matrix), умножает её на матрицу mTransform Modifier’а, а затем применяет это преобразование к Object’ам. В приведённом выше коде преобразование копируется из объекта в стек, умножается, а затем копируется обратно.

Внутренний слой данных этого Object’а выглядит так:

Для ясности я раскрасил записи в памяти объекта Node:

что такое профилирование данных. Смотреть фото что такое профилирование данных. Смотреть картинку что такое профилирование данных. Картинка про что такое профилирование данных. Фото что такое профилирование данных

Первая запись — указатель виртуальной таблицы (virtual table pointer). Это часть реализации наследования в С++: указатель на массив указателей функций, которые выступают в роли виртуальных функций для этого конкретного полиморфного объекта. Для Object, Node, Modifier и любого класса, унаследованного от базового, существуют разные виртуальные таблицы.

Для начала отметим: вектор mObjects — это массив указателей на Object’ы, которые размещаются в памяти динамически. Итерирование по этому вектору хорошо работает с кешем (красные стрелки на иллюстрации ниже), поскольку указатели следуют один за другим. Там есть несколько промахов, но они указывают на что-то, вероятно, не адаптированное для работы с кешем. А поскольку каждый Object размещается в памяти с новым указателем, то можно сказать лишь, что наша помеха находится где-то в памяти.

что такое профилирование данных. Смотреть фото что такое профилирование данных. Смотреть картинку что такое профилирование данных. Картинка про что такое профилирование данных. Фото что такое профилирование данных

Когда мы получаем указатель на Object, вызываем GetTransform() :

Эта инлайновая функция просто возвращает копию mTransform Object’а, так что предыдущая строка эквивалентна этой:

что такое профилирование данных. Смотреть фото что такое профилирование данных. Смотреть картинку что такое профилирование данных. Картинка про что такое профилирование данных. Фото что такое профилирование данных

В этом фрагменте edx является расположением Object’а. А как мы знаем, mTransform начинается за 4 байта до начала объекта. Так что этот код копирует mTransform в стек (MOVUPS копирует в регистр 4 невыравненных значения с плавающей запятой). Обратите на 7 % обращений к трём MOVUPS-инструкциям. Это говорит о том, то промахи кеша также встречаются и в случае с MOV’ами. Не знаю, почему первый MOVUPS в стек занимает не столько же времени, сколько остальные. Мне кажется, «затраты» просто переносятся на последующие MOVUPS из-за особенностей конвейеризации инструкций. Но в любом случае мы получили доказательство высокой стоимости обращения к памяти, так что будем с этим работать.

Заключение

Если дочитали до конца — молодцы! Знаю, поначалу это бывает сложно, особенно если вы не знакомы с ассемблером. Но очень рекомендую найти время и посмотреть, что компиляторы делают с кодом, который они пишут. Для этого можно воспользоваться Compiler Explorer.

Мы собрали ряд доказательств, что главная причина проблем с производительностью в нашем примере кода — это указатели доступа к памяти. Дальше минимизируем затраты на доступ к памяти, а затем снова измерим производительность, чтобы понять, удалось ли добиться улучшения. Этим мы и займёмся в следующий раз.

Источник

Профилирование данных и уведомления в DQS

Профилирование данных в Data Quality Services (DQS) — это процесс анализа данных в существующем источнике данных и отображения статистики по данным в действиях DQS. Оно дает возможности автоматического измерения качества данных. Профилирование DQS интегрировано в проекты управления наборами знаний и качества данных в службах DQS. Он является динамическим и изменяемым. Профилирование служит двум основным задачам: во-первых, оно предоставляет рекомендации по процессам обеспечения качества данных и поддержке решений, во-вторых, помогает оценивать эффективность процессов. Процесс профилирования DQS имеет следующие преимущества.

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

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

Профилирование предоставляет наиболее соответствующую информацию в наиболее соответствующее время.

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

Профилирование позволяет использовать службы Data Quality Services не только для обнаружения знаний, очистки и сопоставления, но и как средство анализа. Можно создать базу знаний для анализа и проводить обнаружение знаний с помощью этой базы данных, определяя на основе статистики профилирования, соответствует ли база знаний вашим потребностям по обнаружению, очистке и сопоставлению.

Как работает профилирование

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

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

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

Шаги Обнаружение и Управление значениями домена действия «Обнаружение набора знаний»

Шаги Очистка и Просмотр результатов и управление ими действия «Очистка»

Шаги Политика сопоставления и Результаты сопоставления действия «Политика сопоставления»

Шаги Сопоставление и Экспорт действия «Сопоставление»

Службы DQS не предоставляют статистику профилирования для операции управления доменами.

Профилирование данных по видам действий

Профилирование DQS использует измерения качества данных для представления качества данных: полнота (степень, в которой представлены данные), точность (степень, в которой данные могут использоваться по предполагаемому назначению) и уникальность (степень, в которой различные значения представляют различные сущности). По умолчанию пустые и пустые значения считаются отсутствующими или более низкие процент полноты. Однако можно также определить другие значения как эквивалентные NULL, в этом случае они также будут считаться отсутствующими.

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

У действий DQS имеются различные наборы статистических показателей профилирования, описанные ниже.

Только у действия «Очистка» имеется статистика профилирования по точности (в процентах по доменам). На точность влияют действительность, согласованность, синтаксические ошибки и правила доменов.

Только у действия «Очистка» имеется статистика профилирования по правильным, исправленным и предлагаемым значениям в источнике, а также исправленным и предлагаемым значениям по доменам (все величины в процентах).

У действий «Очистка» и «Обнаружение набора знаний» имеется статистика профилирования по допустимости (для очистки — по записям, для обнаружения наборов знаний — по записям и доменам). Политика сопоставления и соответствующие действия не имеют статистики для допустимости.

Для действия очистки не предусмотрена статистика профилирования для уникальности. У действий «Обнаружение набора знаний», «Политика сопоставления» и «Сопоставление» имеется статистика профилирования по уникальности в численности и в процентной доле для источника и по доменам.

Дополнительные сведения о конкретной статистике профилирования, связанной с действием, см. в разделах профилирования в следующих статьях:

Профилирование данных в мониторинге активности

Сведения о профилировании для обнаружения знаний, политики сопоставления, сопоставления и очистки доступны не только на страницах действий в клиенте Data Quality, но и в мониторинге активности. Мониторинг активности представляет общие сведения о текущих и прошлых действиях. Кроме свойств действий и связанных с ними вычислительных процессов, можно просматривать в едином расположении информацию по профилированию, созданную для каждого из действий. Выберите действие в таблице действий, чтобы отобразить результаты профилирования в таблице ниже. Результаты профилирования также можно экспортировать. Дополнительные сведения см. в статье DQS Administration.

Уведомления

Кроме сбора и отображения важных статистических показателей и метрик посредством профилирования, службы DQS также будут создавать уведомления (если они включены), сообщая, что по отображаемым статистикам профилирования может потребоваться предпринять те или иные меры. Службы DQS используют Уведомления для выделения важных фактов об источнике данных и для отображения эффективности текущего действия по сравнению с целью, для которой оно было выполнено. Уведомления содержат советы и рекомендации, указывающие на состояние и подсказывающие, как можно улучшить действие обнаружения наборов знаний, очистки данных или сопоставления данных.

Уведомление DQS используется, чтобы привлечь внимание к вопросу, который может оказаться важным, или сообщить о потенциальной проблеме. Независимо от того, действует ли ваше уведомление в соответствии с вашими целями. Например, DQS может опубликовать уведомление, если очистка данных не произведет исправленных или предлагаемых значений, в то время как полнота и точность равны 100 %. Это уведомление будет означать, что запускать действие не требуется. Однако решение о запуске действия вы принимаете самостоятельно.

Уведомление обозначается всплывающей подсказкой с восклицательным знаком на вкладке » Профилирование «. Статистика, связанная с уведомлением, окрашена красным цветом для указания статистического обоснования для уведомления.

Уведомления вы можете включить (режим по умолчанию) или отключить на вкладке Общие параметры раздела Администрирование домашней страницы клиента DQS. Если уведомление отключено, подсказки не отображаются, а статистика не окрашена в красный цвет. Отключение уведомлений не приводит к значительному улучшению производительности. При отключенных уведомлениях профилирование продолжает работать.

Сведения о конкретных условиях, связанных с уведомлениями для действия, см. в следующих статьях:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *