|
|
|
Сэмплирование входных данных для тестирования ETL
|
|||
|---|---|---|---|
|
#18+
Привет, коллеги. Подскажите, пожалуйста, какие есть рабочие методы сэмплирования данных Source для функционального тестирования ETL-процессов. Поясню. У меня есть ETL для загрузки данных из DWH в некую витрину. В DWH лежат сотни миллионов записей, а в некоторых таблицах миллиарды записей. Соответственно нагрузка на БД достаточно высокая, и нет возможности в свое удовольствие играться с данными, выгружать-загружать, смотреть-проверять. Поэтому появилась мысль сэмплировать входные данные, вытащить вменяемый объем в отдельную базенку, и ее крутить как будет душе угодно. Ожидаю от этого сэмпла наличие единичных представителей групп похожих данных. И при этом не хочу сам руками полностью прописывать что я имею в виду под похожестью данных, а хочу, например, прогнать по хранилищу некий алгоритм кластеризации или поиска соседей, который выдаст мне группы, а я из них выберу по одному айдишнику. Приходилось что-нибудь такое делать? Как решали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2018, 00:04 |
|
||
|
Сэмплирование входных данных для тестирования ETL
|
|||
|---|---|---|---|
|
#18+
UP Коллеги, понимаю, что описал довольно сумбурно. Но я рассчитываю на ответы тех, кто уже с подобным сталкивался и понимает о чем речь. Мне хочется хотя бы понять, что задача решаема или это полный бред. И если решаема, то получить направление куда копать. Беглый гуглеж дает только блогозаписи с общими мыслями - типа, берете и сэмплируете. То есть скорее всего авторы делали это вручную или полуавтоматизированно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2018, 10:22 |
|
||
|
Сэмплирование входных данных для тестирования ETL
|
|||
|---|---|---|---|
|
#18+
берете 10 дней из месяца, с ними играете, распределение будет +- то же ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2018, 10:46 |
|
||
|
Сэмплирование входных данных для тестирования ETL
|
|||
|---|---|---|---|
|
#18+
Вася приплывший, По хорошему у тебя должно быть минимум три слоя - разработка, тест, прод. В разработке и тесте - копия прода хотя бы за последний год. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2018, 10:51 |
|
||
|
Сэмплирование входных данных для тестирования ETL
|
|||
|---|---|---|---|
|
#18+
Вася приплывший, Для функционального тестирования только вы знаете какая функциональность заложена в ваш ETL. Реально проще руками написать нужные тесткейсы. Например, етл при загрузке должен делать первую букву имени заглавной. Какое тут семплирование? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2018, 11:19 |
|
||
|
Сэмплирование входных данных для тестирования ETL
|
|||
|---|---|---|---|
|
#18+
Дедушка, Ещё есть генераторы тестовых данных. Иногда я ими пользуюсь, генерят наборы данных по шаблонам. Лень искать но найти в сети можно по database test data generator в гугле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2018, 11:27 |
|
||
|
Сэмплирование входных данных для тестирования ETL
|
|||
|---|---|---|---|
|
#18+
Полковник.Вася приплывший, По хорошему у тебя должно быть минимум три слоя - разработка, тест, прод. В разработке и тесте - копия прода хотя бы за последний год. ну-ну-ну, разбежались сразу. Из 10 проектов, у меня в 9 никто никаких прод данных на тест выдавать не собирался. По секьюрным соображениям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2018, 16:00 |
|
||
|
Сэмплирование входных данных для тестирования ETL
|
|||
|---|---|---|---|
|
#18+
Вася приплывшийUP Коллеги, понимаю, что описал довольно сумбурно. Но я рассчитываю на ответы тех, кто уже с подобным сталкивался и понимает о чем речь. Мне хочется хотя бы понять, что задача решаема или это полный бред. И если решаема, то получить направление куда копать. Беглый гуглеж дает только блогозаписи с общими мыслями - типа, берете и сэмплируете. То есть скорее всего авторы делали это вручную или полуавтоматизированно. я сталкивался. Решается наличием ВЫДЕЛЕННОЙ тест команды. где тестировщики пишут тест кейсы для всех/не всех/важных кейсов и сами автоматизируют их генерацию в базе и проверки на их основе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2018, 16:03 |
|
||
|
Сэмплирование входных данных для тестирования ETL
|
|||
|---|---|---|---|
|
#18+
в SSAS Data Mining (DMX) есть полноценный встроенный sampling механизм, у многих алгоритмов есть параметр - какую часть данных использовать для тренировки/обучения моделей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2018, 16:12 |
|
||
|
Сэмплирование входных данных для тестирования ETL
|
|||
|---|---|---|---|
|
#18+
схожая функциональность присувствует и в Azure Machine Learning, можно сделать и в SQL Server 2016/2017 - особенно если установлен компонент "R Services" / "Advanced Analytic Extensions" / "Machine Learning Services" (In Database) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2018, 16:16 |
|
||
|
Сэмплирование входных данных для тестирования ETL
|
|||
|---|---|---|---|
|
#18+
Ivan DurakПолковник.Вася приплывший, По хорошему у тебя должно быть минимум три слоя - разработка, тест, прод. В разработке и тесте - копия прода хотя бы за последний год. ну-ну-ну, разбежались сразу. Из 10 проектов, у меня в 9 никто никаких прод данных на тест выдавать не собирался. По секьюрным соображениям. Я тебе сочувствую. А обезличить конечно же никто не догадался. Тестовая среда то хоть была или хреначил сразу в прод? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2018, 16:29 |
|
||
|
Сэмплирование входных данных для тестирования ETL
|
|||
|---|---|---|---|
|
#18+
Полковник.Ivan Durakпропущено... ну-ну-ну, разбежались сразу. Из 10 проектов, у меня в 9 никто никаких прод данных на тест выдавать не собирался. По секьюрным соображениям. Я тебе сочувствую. А обезличить конечно же никто не догадался. Тестовая среда то хоть была или хреначил сразу в прод? обезличить это на словах просто, Т.к. обезличивание - это время, а значит и деньги и т.п. то в итоге в меньше половины случаев это делают. Тем более что это надо делать заказчику а не исполнителю. В итоге иногда никаких прод данных нет. Иногда делают ручное обезличивание и раз в полгода обновляют базу ну и иногда полноценное. т.е. примерно так: 10 проектов только моих лично: - 2 проекта не заморачиваются -дают прод данные как есть, с зарплатами и фамилиями (просто душки) - 1 заморачивается полноценным онлайн обезличиванием на лету - это целый подпроект с нехилым бюджетом - 1 руками админов у себя обезличивают и кидают дамп раз в полгода (отстой, структура конечно же устаревает) - 2 решили что хорошая команда тестеров нагенерит тесткейсов лучше любых реальных данных (что правда, да еще и в принципе хорошая команда тестеров это очень приятно для разработчиков) - 4 остальных не заморачивались от слова совсем и предоставляли нам шанс самим ипаться с данными на наше усмотрение. Что в зависимости от резиновости бюджета выливается либо в более менее норм тестирование, либо полный пофигизм к тестам. p.s. Не поверишь, как раз тестовая и девовская среда у меня была ВСЕГДА.... на всех 10 проектах. На одном даже среды 4 было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2018, 08:48 |
|
||
|
Сэмплирование входных данных для тестирования ETL
|
|||
|---|---|---|---|
|
#18+
Коллеги, привет. Спасибо всем подключившимся к обсуждению. Краткое резюме и мои комментарии по ответам/советам: 1. Писать кейсы руками, для каждого кейса подготавливать данные. Именно этим сейчас и занимаюсь до потери пульса. Руки устали, глаза болят, хочется ускорить процесс. 1.1 То же самое, но руками команды тестировщиков. Хороший вариант. Тут требуются некие организационные приседания. 2. Генерация синтетики по шаблонам. Нужно грамотно описывать шаблоны. Тоже в каком-то виде сейчас это делаю, так как шаблоны рождаются прямо из кейсов. Как раз следующий шаг - генерить по шаблонам. Тоже смотрю в этом направлении. 3. Брать данные с прода. Ivan Durak прав, с прода все данные достать нельзя. Обезличивание работает со скрипом. Да и тестовые стенды имеют куцые ресурсы, туда все мириады строк не залить. "Берете последние 10 дней", "за последний год" в нашем случае сильно не сокращают выборку. Условие отбора должно быть хитрее. Описывать его (и главное при каждом изменении требований дорабатывать) не хочется, поэтому хочу алгоритмическое сэмплирование. 4. vikkiv предлагает конкретные инструменты, в которых якобы есть функции сэмплирования. А вот есть ли успешный опыт использования этих инструментов именно в задаче подготовки данных для тестирования ETL? То есть когда сначала тестировали по-дедовски - руками создавали кейсы/шаблоны и по ним генерили синтетику - а потом перешли на использование Data Mining/ML инструментария и зажили счастливо. Коллеги, как ТС предлагаю сконцентрироваться только на четвертом пункте в дальнейших обсуждениях. Первые три пункта понятны, и я по ним параллельно работаю. Здесь же хочется услышать мнения только по семплированию и его реальной применимости к вопросам тестирования ETL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2018, 12:29 |
|
||
|
Сэмплирование входных данных для тестирования ETL
|
|||
|---|---|---|---|
|
#18+
Вася приплывшийКоллеги, как ТС предлагаю сконцентрироваться только на четвертом пункте в дальнейших обсуждениях.инструменты то вам предложили, но умолчали, что использовать семплирование в SSAS DM можно только для целей DM (обучающая выборка). в таком контексте более близкое к вашим потребностям это SSIS с его Percentage Sampling ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2018, 13:21 |
|
||
|
Сэмплирование входных данных для тестирования ETL
|
|||
|---|---|---|---|
|
#18+
Вася приплывшийПодскажите, пожалуйста, какие есть рабочие методы сэмплирования данных Source для функционального тестирования ETL-процессов. Если я правильно понял задачу, просто процитирую Кимбалла из его The Data Warehouse ETL Toolkit, Copyright 2004 by Wiley Publishing, Inc. Зачем изобретать велосипед? авторAnalyzing source data sounds easy, right? What happens when your source table has 100 million rows, with 250,000 distinct values? The best approach to analyzing monster data sources is with data samples. We’ve used many different techniques for sampling data, ranging from simply selecting the first 1,000 rows to using the most elaborate algorithms, none of which are especially remarkable.We find that the following query, which simply counts the rowsin the table and slices the table evenly into a specified number of segments, accurately samples the data regardless of the values in the table: Код: sql 1. 2. 3. 4. 5. 6. 7. To examine more or less data, simply alter the 1,000 to the number of rows you’d like returned in your sample. Another approach involves adding a random number column to data, which can be sorted to select any desired fraction of the total table. Once you have this sample data, you can perform your value-distribution analysis as usual. Selecting data by any other means, besides selecting all of it, can skew your tests results. A common mistake we’ve noticed is selecting a specific range of dates to narrow a result set. Data corruption usually occurs by bugs in the application program or by untrained staff. Most anomalies we’ve come across happen temporarily; then either the application is corrected or the person is replaced, and the anomaly disappears. Selecting data within a date range can easily miss these anomalies. Ну, а дальше, как и было сказано: авторData-profiling tools are built to perform ... data sampling. или пишите сами, что и как вы собираетесь понять из профилирования данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2018, 15:18 |
|
||
|
Сэмплирование входных данных для тестирования ETL
|
|||
|---|---|---|---|
|
#18+
Дедушка...инструменты то вам предложили, но умолчали, что использовать семплирование в SSAS DM можно только для целей DM (обучающая выборка)... в таком контексте более близкое к вашим потребностям это SSIS с его Percentage Sampling..для ETL согласен - исторически лучше (хотя оценку и желательно производить если есть возможности и того стоит) использовать инструменты для этого специально разработанные/предназначенные (несмотря на относительную медленность SSIS), изначално данные для DM конечно предназначены для внутреннего использования, но ... эти данные обычно хранятся внутри и доступны для внешних приложений через select...from...cases where IsTrainingCase() а вообще дело в деталях - для чего выборка: есть для проверки работы с разными типами/длиннами данных, есть для оценки архитектуры {всей цепи}, качества данных, поведения агрегаций, производительности под разными типами нагрузок и пр... например если есть сложные структуры и контекстные запросы - то в выборку легко может не попасть нужная комбинация клиент/регион/продукт/отдел/календарь - т.е. где-то цепь прервётся из-за того что не хватает данных в измерении или в фактах для QA/Demo для бизнеса хватает выгрузить клиента, временной интервал,..{дальше по желанию/модели данных} для отладки совместимостей типа/длинны данных - можно делать выборки из distinct, min/max {в том числе разной точностью после запятой} вместе с null с репрезентативностью в статистике тоже не так вё просто - и при высоких {да и при низких} cardinality/density{sparsity} нужно ещё оценить необходимый размер выборки чтобы была достаточная вероятность редко встречающегося элемента (а то легко выпадет). вообще генерация плоского распределения (реализация того-же Monte-Carlo) - задача довольно простая с легко доступными родными функциями самой СУБД, так что скорее вопрос как реализовать именно быструю работу - доступ к нужной rownum (и лучший-ли это алгоритм) как рекомендуется выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2018, 19:56 |
|
||
|
Сэмплирование входных данных для тестирования ETL
|
|||
|---|---|---|---|
|
#18+
vikkivнесмотря на относительную медленность SSIS Стесняюсь спросить: как так? О каких компонентах SSIS идет речь, о каких коннекш менеджерах? Неужели о всех? Какая методика сравнительного тестирования применялась? Каковы были результаты тестирования? И что же в конечном итоге побыстрее будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2018, 09:23 |
|
||
|
Сэмплирование входных данных для тестирования ETL
|
|||
|---|---|---|---|
|
#18+
alexdr, Например, lnformatica "побыстрее будет" и что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2018, 11:03 |
|
||
|
Сэмплирование входных данных для тестирования ETL
|
|||
|---|---|---|---|
|
#18+
Дедушка, на чем основано подобное мнение? Цифры есть? Описание методики тестирования? Ну что бы понять на каких задачах Информатика быстрее. Или на всех? Если есть только ощущения, то у меня они сложились несколько иные. Именно на уровне научных впечатлений, не научных доказательств. Это ведь не одно и тоже, так? Дедушкаи что? И ничего. Я так спросил. Надо ведь расширять свой кругозор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2018, 12:35 |
|
||
|
Сэмплирование входных данных для тестирования ETL
|
|||
|---|---|---|---|
|
#18+
Привет, коллеги. alexdr, я совершенно согласен с Кимбаллом в том плане, что SELECT TOP 1000 для сэмплирования никак не подходит. По профилированию данных беглый гуглеж опять же дает околорекламные записи типа http://ds.datasourceconsulting.com/blog/data-profiling/ Вы можете предложить какие-нибудь конкретные продукты? vikkivа вообще дело в деталях - для чего выборка: есть для проверки работы с разными типами/длиннами данных, есть для оценки архитектуры {всей цепи}, качества данных, поведения агрегаций, производительности под разными типами нагрузок и пр... Выборка нужна для сокращения объема входных данных с сохранением разнообразия, так сказать. Чтобы на этой выборке можно было отловить максимум вариантов развития событий в источнике, и быстрее сформировать корректный ETL. То есть я хочу высокую наглядность данных и высокую скорость работы с такой выборкой на этапе уточнения требований к ETL и собственно разработки. vikkivвообще генерация плоского распределения (реализация того-же Monte-Carlo) - задача довольно простая с легко доступными родными функциями самой СУБД, так что скорее вопрос как реализовать именно быструю работу - доступ к нужной rownum (и лучший-ли это алгоритм) как рекомендуется выше. Я себе примерно представляю какой объем работы нужно выполнить, чтобы средствами СУБД отобрать необходимую выборку, поэтому хочу уже готовый инструмент. Как я себе его представляю: я подаю на вход нужный мне набор табличек и полей (возможно с указанием PK и FK), инструмент засасывает в себя исходные данные, находит группы похожих данных в рамках перечисленных таблиц и полей, и выплевывает куда-нибудь результат. Результат представляет собой тот же набор таблиц и полей, что были поданы на вход, но содержит гораздо меньше записей. Я согласен на какую-то погрешность в выходных данных. В конце концов никто не застрахован от кривых данных в источнике. Еще я вижу большой плюс автоматического сэмплирования по сравнению с ручным - в случае изменений требований к ETL потребуется править запросы для отбора данных. А в инструменте для автоматического сэмплирования только добавить/поменять набор входных таблиц и полей, и еще раз прогнать выборку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2018, 19:35 |
|
||
|
Сэмплирование входных данных для тестирования ETL
|
|||
|---|---|---|---|
|
#18+
Вася приплывшийя совершенно согласен с Кимбаллом в том плане, что SELECT TOP 1000 для сэмплирования никак не подходит. Ммм... мне показалось, что в цитате говорится не только об этом. Кимбалл предлагает метод рандомизации записей, по возможности наиболее полно отражающий всю их совокупность. Но это только принцип, приходится еще много что держать в уме, ту же ссылочную целостность. Ясно, что чем больше записей в выборке, тем более полно эта выборка будет соответствовать генеральной совокупности. Также можно придумать и пользоваться любыми другими методами рандомизации. Как по мне, так при создании решения, использующего источники с огромным количеством записей, такое рандомное сэмплирование данных должно выполняться обязательно, с тем чтобы при внесении изменений в код можно было в комфортное время увидеть эти изменения в целевых таблицах (структурах), а не терять раз за разом бесполезно время на ожидание завершения всех процессов. При этом важно чтобы в выбоку попали все (ну, почти все) аномалии данных, встречающиеся в источнике. Вася приплывшийЯ себе примерно представляю какой объем работы нужно выполнить, чтобы средствами СУБД отобрать необходимую выборку, поэтому хочу уже готовый инструмент. Мне-то показалось, что используя тот или иной вариант рандомизации записей и разумно большая выборка не подразумевают под собой какой-то необъятный объем работы. Хотя, многое зависит от обстоятельств. А вероятность наступить на грабли все равно будет отличаться от нуля, вопрос только в том - насколько отличаться и сколько раз в конечном итоге придется наступать. Вася приплывшийЕще я вижу большой плюс автоматического сэмплирования по сравнению с ручным Вполне возможно, что это так и есть. Но мне лично, чтобы полноценно "пощупать" данные в источниках по-любому приходится писать и переписывать стописят запросов к источникам. Беда, когда из-за количества записей и других особенностей результата приходится ждать некомфортно долго. Это еще один аргумент в пользу предварительного рандомного ограничения выборки. Вася приплывшийВы можете предложить какие-нибудь конкретные продукты? Ataccama Data Quality Analyzer мне удалось только чуть-чуть пощупать. Ничего про него хорошего или плохого сказать не могу, но можно самому посмотреть. Да и в самом SSIS есть Data Profiling Task. Опять же, ничего не могу сказать о его удобстве, возможностях и пригодности для Ваших целей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2018, 20:38 |
|
||
|
|

start [/forum/topic.php?fid=49&msg=39608913&tid=1857955]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
170ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 301ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...