УДК 004.424 ББК 32.372 Ф43 Альберто Феррари и Марко Руссо · Ф43...

Post on 25-Jun-2020

2 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

УДК 004.424ББК 32.372

Ф43

АльбертоФеррарииМаркоРуссоФ43 АнализданныхприпомощиMicrosoftPowerBIиPowerPivotдляExcel /пер.

с анг.А. Ю. Гинько. –М.:ДМКПресс,2020. –288 с.: ил.

ISBN978-5-97060-858-6

УДК 004.424ББК 32.372

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

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

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

CopyrightAuthorized translation fromtheEnglish languageedition,entitledANALYZINGDATAWITHPOWERBIAND

POWERPIVOTFOREXCEL,1stEditionbyALBERTOFERRARI;MARCORUSSO,publishedbyPearsonEducation, Inc,publishingasMicrosoftPress,Copyright©2017

RUSSIAN language edition published byDMKPRESS PUBLISHING LTD.,Copyright©[2020].

ISBN(анг.)978-1-5093-0276-5© 2017byAlbertoFerrariandMarcoRussoISBN(рус.)978-5-97060-858-6© Оформление,издание,перевод,

ДМКПресс,2020

Оглавление

Рецензия ................................................................................................................. 9

Предисловие от издательства .............................................................10

Введение ...............................................................................................................11

Длякогопредназначенаэтакнига?........................................... 11Какмыпредставляемсебенашегочитателя?........................... 11Структуракниги.......................................................................... 12Условныеобозначения................................................................ 14Сопутствующийконтент............................................................. 14Благодарности.............................................................................. 14Списокопечатоки поддержка.................................................... 14Обратнаясвязь............................................................................. 15Оставайтесьс нами...................................................................... 15

Глава 1. Введение в моделирование данных .........................17

Работас однойтаблицей............................................................. 18Введениев модельданных......................................................... 25Введениев схему«звезда».......................................................... 33Пониманиеважностиименованияобъектов............................ 40Заключение.................................................................................. 42

Глава 2. Использование главной/подчиненной таблицы ........................................................45

Введениев модельданныхс главнойи подчиненнойтаблицами.................................................................................... 45Агрегированиемеризглавнойтаблицы....................................47Выравниваниеглавнойи подчиненнойтаблиц........................ 55Заключение.................................................................................. 58

Глава 3. Использование множественных таблиц фактов ..................................................................................................59

Использованиеденормализованныхтаблицфактов................ 59Фильтрациячерезизмерения.................................................... 66Пониманиенеоднозначностимоделиданных.......................... 69

Работас заказамии счетами...................................................... 72Расчетполнойсуммыпосчетамдляпокупателя..................77Расчетсуммыпосчетам,включающимданныйзаказотконкретногопокупателя........................................... 78Расчетсуммызаказов,включенныхв счета.......................... 78

Заключение.................................................................................. 81

Глава 4. Работа с датой и временем ...............................................83

Созданиеизмерениядатыи времени........................................ 83Понятиеавтоматическихизмеренийвремени..........................87

Автоматическаягруппировкадатв Excel...............................87Автоматическаягруппировкадатв PowerBIDesktop.......... 89

Использованиенесколькихизмеренийдатыи времени......... 90Обращениес датойи временем................................................. 96Функциидляработыс датойи временем.................................. 99Работас финансовымикалендарями....................................... 101Расчетрабочихдней.................................................................. 104

Учетрабочихднейв рамкаходнойстраныилирегиона...... 104Учетрабочихднейв разныхстранах....................................107

Работас особымипериодамигода........................................... 111Работас непересекающимисяпериодами........................... 111Периоды,связанныес текущимднем.................................. 113Работас пересекающимисяпериодами............................... 116

Работас недельнымикалендарями......................................... 118Заключение................................................................................ 124

Глава 5. Отслеживание исторических атрибутов ...............127

Введениев медленноменяющиесяизмерения.......................127Использованиемедленноменяющихсяизмерений............... 133Загрузкамедленноменяющихсяизмерений.......................... 136

Исправлениегранулярностив измерении.......................... 140Исправлениегранулярностив таблицефактов................... 143

Быстроменяющиесяизмерения.............................................. 145Выбороптимальнойтехникимоделирования........................ 149Заключение................................................................................ 150

Глава 6. Использование снимков ................................................... 151

Данные,которыенельзяагрегироватьпо времени................ 151Агрегированиеснимков............................................................ 153Понятиепроизводныхснимков............................................... 159Понятиематрицыпереходов.................................................... 162Заключение................................................................................ 168

6 Оглавление

Глава 7. Анализ интервалов даты и времени ........................ 169

Введениевовременныеданные.............................................. 170Агрегированиепростыхинтервалов........................................ 172Интервалыс переходомдат...................................................... 175Моделированиерабочихсмени временныхсдвигов................................................................ 180Анализактивныхсобытий........................................................ 182Смешиваниеразныхинтервалов............................................. 192Заключение................................................................................ 198

Глава 8. Связи «многие ко многим» ............................................. 201

Введениев связи«многиекомногим».................................... 201Понятиешаблонадвунаправленнойфильтрации.............. 203Понятиенеаддитивности..................................................... 206

Каскадныесвязи«многиекомногим»..................................... 208Временныесвязи«многиекомногим».................................... 211

Факторыперераспределенияи процентныесоотношения................................................. 215Материализациясвязей«многиекомногим»......................217

Использованиетаблицыфактовв качествемоста.................. 218Вопросыпроизводительности.................................................. 219Заключение................................................................................ 223

Глава 9. Работа с разными гранулярностями ....................... 225

Введениев гранулярности........................................................ 225Связинаразныхуровняхгранулярности.................................227

Анализданныхо бюджетировании...................................... 228ИспользованиеDAXдляраспространенияфильтра........... 230Фильтрацияприпомощисвязей.......................................... 233Скрытиезначенийнанедопустимыхуровняхгранулярности......................................................... 235Распределениезначенийпоуровнямс большейгранулярностью................................................... 239

Заключение................................................................................ 241

Глава 10. Сегментация данных в модели ................................ 243

Вычислениесвязейпонесколькимстолбцам......................... 243Вычислениестатическойсегментации.................................... 246Использованиединамическойсегментации........................... 248Пониманиепотенциалавычисляемыхстолбцов:ABC-анализ................................................................................ 251Заключение................................................................................ 256

Оглавление 7

Глава 11. Работа с несколькими валютами .............................257

Введениев различныесценарии...............................................257Нескольковалютисточника,однавалютаотчета................... 258Однавалютаисточника,нескольковалютотчета................... 263Нескольковалютисточника,нескольковалютотчета............ 268Заключение................................................................................ 270

Приложение A. Моделирование данных 101 ...................... 271

Таблицы...................................................................................... 271Типыданных.............................................................................. 273Связи........................................................................................... 273Фильтрацияи перекрестнаяфильтрация................................ 274Различныетипымоделей......................................................... 279

Схема«звезда»....................................................................... 279Схема«снежинка».................................................................. 280Моделис таблицами-мостами.............................................. 281

Мерыи аддитивность................................................................ 283Аддитивныемеры................................................................. 283Неаддитивныемеры............................................................. 283Полуаддитивныемеры.......................................................... 283

Предметный указатель ........................................................................... 285

8 Оглавление

Рецензия

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

аналитикиMicrosoftPowerBI.Втечениенесколькихпоследнихлет,ког-даслушателипослетренинговпоExcel,PowerPivotиQueryспрашивали«что мнепочитатьпроPowerBI?»,янезнал,чтоответить.Англоязычнойлитературынаписанопо этойтеме ужемного, нона русском –полныйноль.Теперьуженет.

Во-вторых, я очень рад, что в качестве первой ласточки издательство«ДМК Пресс» решило перевести именно эту книгу. Альберто Феррари иМаркоРуссооднозначновходятвкругсамыхдостойныхавтороввэтойоб-ласти.Онищедроделятсясвоимизнаниямивкнигахистатьях,выступаютнаконференцияхипроводяттренингипоPowerPivot,DAXиPowerBIещёссамогоначалапоявленияэтихтехнологийизнаютонихбольше,чемктобытонибыло.Отдельно,кактренер,хочуотметитьихпреподавательскийталант,стройностьилогичностьобъяснений,красотупримеров–этодо-рогогостоит.

Бизнес-аналитика (Business Intelligence, BI) давно уже перестала бытьуделомгиков-айтишниковизмиллиардныхкорпораций.Сегодняонаспо-собнапринестипользуприпринятииуправленческихрешенийвкомпа-нии любого калибра, помочь визуализировать результаты и непрерывноотслеживатьихдинамику,собираяданныеизразных«вселенных»:бухгал-терских программ, баз данных, файлов, интернета. Сегодня каждый мо-жет (и должен!)быть«самсебеаналитик».Иэтакнига –настоящийклади огромноеподспорьедлявсех,ктовсталнаэтотпуть.

Николай Павлов,Microsoft Certified Trainer, Microsoft Most Valuable Professional,

автор проекта «Планета Excel», www.planetaexcel.ru

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

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

Выможетенаписатьотзывпрямона нашемсайтеwww.dmkpress.com,зайдя на  страницу книги, и  оставить комментарий в  разделе «Отзывыи рецензии».Такжеможнопослатьписьмоглавномуредакторупо адресуdmkpress@gmail.com,приэтомнапишитеназваниекнигив темеписьма.

Если есть тема, в  которой вы квалифицированы, и  вы заинтересова-ныв написанииновойкниги,заполнитеформуна нашемсайтепо адресуhttp://dmkpress.com/authors/publish_book/илинапишитев издательствопо адресуdmkpress@gmail.com.

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

Есливынайдетекакие-либоошибкив коде,пожалуйста,сообщитео нихглавномуредакторупо адресуdmkpress@gmail.com,и мыисправимэтов следующихтиражах.

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

Пожалуйста,свяжитесьс намипо адресуэлектроннойпочтыdmkpress@gmail.comсоссылкойна подозрительныематериалы.

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

Введение

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

В2015годуувиделсветпрограммныйпродуктPowerBI.И сегодняспра-ведливобудетутверждать,чтоте,ктолюбятцифры,любяттакжеPowerPivotдляExcelи PowerBI.Этисредстваимеютмногообщего –вчастности,ихобъединяетдвижокбазданныхVertiPaq,а такжеязыкDAX,унаследованныйотSQLServerAnalysisServices.

В прежних версиях Excel процесс анализа информации главным обра-зомосновывалсяназагрузкенаборовданных,расчетезначенийв столбцахи написанииформулдляпостроенияграфиков.Приэтомв своейработевысталкивалисьс  серьезнымиограничениями –начинаяс размерарабочейкнигии заканчиваятем,чтоязыкформулExcelне лучшимобразомпод-ходитдлярешениячисловыхзадачбольшогообъема.Новыйдвижок,лежа-щийв основеPowerBIи PowerPivot,сталогромнымшагомвперед.С нимв вашемраспоряженииоказалсяполныйфункционалбазданных,а такжепотрясающийязыкDAX.Но ведьс большойсилойприходити большаяот-ветственность!И есливыхотитевоспользоватьсявсемипреимуществамиэтихновыхсредств,вампридетсямногомунаучиться.В частности,необхо-димобудетпознакомитьсяс основамимоделированияданных.

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

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

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

Для кОгО преДназначена эта книга?Целеваяаудиториякнигидовольноразнообразна.В неевходяти пользова-телиExcel,применяющиев своейпрактикеPowerPivot,и специалистыпоанализуданныхв PowerBI,и даженовичкив областибизнес-аналитики,желающиепознакомитьсяс основамимоделированияданных.Всеонипо-тенциальныечитателиданнойкниги.

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

как мы преДСтавляем Себе нашегО читателя?Мыпредполагаем,чтонашчитательобладаетбазовымизнаниямив обла-стисводныхтаблицExcelи/илиимеетопытиспользованияPowerBIв ка-чествесредстваотчетностии моделирования.Наличиеаналитическихна-выков также приветствуется. В  своей книге мы не  затрагиваем вопросыинтерфейсаExcelилиPowerBI.Вместоэтогомыфокусируемсвоевниманиеисключительнонамоделяхданных –какпроектироватьи модифицироватьихтак,чтобызначительноупроститьзапросы.Такчтонашазадача –рас-сказатьвам,чтоделать,а какэтоделать,выужрешитесами.Мы неплани-ровалисоздаватьпошаговоеруководство,а хотелимаксимальнопростымязыкомобъяснитьдостаточносложнуютему.

Также мы намеренно обошли вниманием описание языка DAX. Былобыневозможноуместитьв однойкнигеи теориюмоделированияданных,и DAX.Есливыужезнакомыс этимязыком,вамбудетпрощеразобратьсяс многочисленнымипримерамикоданаDAX,представленнымив даннойкниге.В противномслучаесоветуемвампрочитатькнигу«Подробноеру-ководствопоDAX»(TheDefinitiveGuidetoDAX),являющуюсяполноценным

12 Введение

учебникомпоэтомуязыкуи хорошосочетающуюсяс приведеннымив на-шейкнигепримерами.

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

� глава1«Введениев моделированиеданных».Являетсявводнойча-стью в  базовые принципы моделирования данных. В  ней мы рас-скажем,чтоиз себяпредставляетмодельданных,начнем говоритьо  понятии гранулярности, определим понятия основных моделейхранилища данных – «звезда» и  «снежинка»,  – а также поговоримо нормализациии денормализации;

� глава2«Использованиеглавной/подчиненнойтаблицы».Описываетнаиболеераспространенныйсценарийс наличиемглавнойи подчи-неннойтаблиц.В этойглавемыобсудимпримерс заказамии строка-мизаказов,размещеннымив двухотдельныхтаблицахфактов;

� глава3«Использованиемножественныхтаблицфактов».Описываетсценарии,в которыху васестьмножествотаблицфактов,наоснова-ниикоторыхнеобходимопостроитьединыйотчет.В этойглавемыподчеркнемважностьсозданиякорректноймногомерноймоделидляоблегченияработыс информацией;

� глава 4 «Работа с  датой и  временем». Это одна из самых длинныхглав книги. В  ней затронуты вопросы логики расчетов на основа-нии временных периодов. Мы  расскажем, как правильно создатьтаблицу-календарь и  работать с  функциями времени (YTD, QTA,PARALLELPERIOD и др.).Послеэтогоприведемнесколькопримероврасчетовнаоснованиирабочихдней,поработаемс особымиперио-дамигодаи пояснимв целом,какправильноработатьс датами;

� глава5«Отслеживаниеисторическихатрибутов».В этойглавеопи-сываютсяособенностииспользованияв моделиданныхмедленноменяющихсяизмерений.Такжепредставленодетальноеописаниетрансформаций, которые необходимо выполнить для отслежива-ния исторических атрибутов, и  даны инструкции по написаниюкорректного кода на DAX, учитывающего медленно меняющиесяизмерения;

� глава6«Использованиеснимков».Описываетлюбопытныеаспектыиспользованияснимков(snapshot).В этойглавевыузнаете,чтотакоеснимки,когдаи длячегоихнеобходимоиспользовать, а такжекакрассчитывать значения при применении снимков. Кроме того, мыпосмотрим,какможноиспользоватьмощнуюмодельс применениемматрицыпереходов;

Введение 13

� глава7«Анализинтерваловдатыи времени».В этойглавемыпойдемещенашагдальше,чемв  главе5.Мы продолжимзаниматьсявре-меннымивычислениями,нонаэтотразобратимсяк моделиданных,в которойсобытия,хранящиесяв таблицефактов,обладаютопреде-леннойдлительностью,а значит,требуютособогоподходадляполу-чениякорректныхрезультатов;

� глава8«Связимногиекомногим».Описываетхарактерныеособен-ности использования связей «многие комногим». Такойтип связииграетважнуюрольв любоймоделиданных.Мы рассмотримобыч-ныесвязи«многиекомногим»,связис каскаднымидействиямии ихиспользование с  учетом факторов перераспределения и  фильтров.Такжеобсудимвопросыпроизводительноститакихсвязейи способыееулучшения;

� глава9«Работас разнымигранулярностями».В этойглавемыуглу-бимсяв работус таблицамифактовс разнымиуровнямигрануляр-ности.Мы рассмотримпримерыизобластибюджетирования,в кото-рыхтаблицыфактовбудутхранитьинформациюс разнойстепеньюдетализации,и предложимнесколькоальтернативныхспособовдлярешенияэтихситуацийкакприпомощиязыкаDAX,таки непосред-ственнов моделиданных;

� глава10«Сегментацияданныхв модели».В этойглавемырассмот-римнесколькомоделейс применениемтехникисегментации.Нач-немс простойсегментациипоцене,послечегоперейдемк анализудинамической сегментации с использованиемвиртуальных связей.В концеглавыпроведемABC-анализсредствамиDAX;

� глава11«Работас несколькимивалютами».В этойглавемырассмот-римособенностиработыс несколькимивалютами.Взаимодействуяс  курсами валют, важно понимать их специфику и  в  соответствиис нейстроитьмодельданных.Мы проанализируемнесколькосцена-риевс разнымитребованиямии длякаждогоизнихвыработаемоп-тимальноерешение;

� приложениеA«Моделированиеданных101».Этоприложениеможнорассматриватькаксправочноеруководство.Здесьмыкраткоопишемна примерах все базовые концепции, использованные в  этой книге.Привозникновениивопросоввывсегдаможетеобратитьсяк приложе-нию,освежитьв памятисоответствующуютемуи вернутьсяк чтению.

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

14 Введение

уСлОвные ОбОзначенияВэтойкнигепринятыследующиеусловныеобозначения:

� жирнымпомечентекст,которыйвводитевы;� курсивиспользуетсядляобозначенияновыхтерминов;� программныйкодобозначенв книгемоноширинным шрифтом;� первыебуквыв названияхдиалоговыхокон,ихэлементов,а такжекоманд –прописные.Например, в диалоговомокнеSaveAs... (Со-хранитькак…);

� комбинациинажимаемыхклавишнаклавиатуреобозначаютсязна-комплюс(+)междуназваниямиклавиш.Например,Ctrl+Alt+Deleteозначает, что вы должны одновременно нажать клавиши Ctrl, Altи Delete.

СОпутСтвующий кОнтентДляподкреплениявашихнавыковнапрактикемыснабдиликнигусопут-ствующим контентом, которыйможно скачать по ссылке: https://aka.ms/AnalyzeData/downloads.

Представленныйархивсодержитфайлыв форматахExcelи/илиPowerBIDesktopдлявсехпримеровизэтойкниги.Каждомурисункусоответствуетотдельныйфайл,чтобывыимеливозможностьанализироватьразныешагии присоединитьсяк выполнениюпримераналюбойстадии.Для большин-ствапримеровпредставленыфайлыв форматеPowerBIDesktop,такчтомынастоятельнорекомендуемвамустановитьэтотпрограммныйпакетс сай-таPowerBI.

благОДарнОСтиВконцевводнойглавымыбыхотеливыразитьблагодарностьнашемуре-дакторуКейтШуп(KateShoup),котораяпомогаланамнапротяжениивсейкниги,и техническомуредакторуЭдуПрайсу(EdPrice).Еслибыне ихдо-тошность,читатьэтукнигубылобыгораздотруднее.Есликнигасодержитменьшеошибок,чемнашапервоначальнаярукопись,этотолькоихзаслуга.А вовсехоставшихсянеточностяхвиноватылишьмы.

СпиСОк ОпечатОк и пОДДержкаМысделаливсевозможное,чтобытексти сопутствующийконтентк этойкниге не  содержали ошибок. Все неточности, которые были обнаруженыпослепубликациииздания,перечисленынасайтеMicrosoftPressпоадресу:https://aka.ms/AnalyzeData/errata.

Введение 15

Есливынашлиопечатку,котораяне указанав перечне,выможетеоповес-титьнаснатойжестранице.

Есливамтребуетсядополнительнаяпомощь,направьтеписьмов MicrosoftPressBookSupportпоадресу:mspinput@microsoft.com.

Отметим,чтоуслугипоподдержкепрограммногообеспеченияMicrosoftпоэтомуадресуне оказываются.

Обратная СвязьВаше удовлетворение от книги – главный приоритет дляMicrosoft Press,а вашаобратнаясвязь –нашсамыйценныйактив.Пожалуйста,выскажитесвоемнениеобэтойкнигепоадресу:https://aka.ms/tellpress.

Пройдитенебольшойопрос,и мыприслушаемсяковсемвашимидеями пожеланиям.Заранееблагодаримзавашиотзывы!

ОСтавайтеСь С намиДавайтепродолжимобщение!ЗаходитенанашTwitter:@MicrosoftPress.

16 Введение

Глава 1Введение в моделирование

данных

Книга, которую вы держите в  руках, посвященамоделированию данных(datamodeling).Но передтемкакприступатьк чтению,неплохобыпо-нять,зачемвамвообщенужноизучатьмоделированиеданных.В концеконцов,выможетепростозагрузитьнужныеданныев Excelи построитьнаихосновесводнуютаблицу.Такзачемвамещечто-тознатьо модели-рованииданных?

К нам как к  консультантам в  этой области часто обращаются частныелицаи  компании, которыене могут рассчитать какие-тонужныеимпо-казатели.Приэтомонипонимают,чтовсеисходныеданныедлярасчетау нихесть,нолибоформулаполучаетсячересчурсложнойи запутанной,либоцифрыне сходятся.В 99 %случаевпричинойявляетсянеправильноспроектированнаямодель данных(datamodel).Еслиеепоправить,формуластанетпростойи понятной.Такчтовампростонеобходимонаучитьсямо-делироватьданные,есливыхотитеулучшитьсвоианалитическиенавыкии  предпочитаете концентрироваться на принятии правильных решений,а ненапоискезамысловатойформулыв справочникепоDAX.

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

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

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

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

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

Пристегнитеремни!Пришловремяузнатьвсетайныо моделированииданных.

рабОта С ОДнОй таблицейЕсливыиспользуетеExcelи сводныетаблицыдляанализаданных,вели-ка вероятность, что вы загружаете информациюпосредством запроса изкакого-тоисточника –обычноизбазыданных.Послеэтогостроитесвод-нуютаблицуи приступаетек анализу.Разумеется,приэтомвывынужденымиритьсяс некоторымиограничениямиExcel,главнымизкоторыхявляет-сялимитнаколичествострокв таблице,равныйодномумиллиону.Большезаписейпростоне поместитсянарабочемлисте.Честноговоря,в началесвоегопутимыне рассматривалиэтуособенностькаксерьезныйсдержива-ющийфактор.В самомделе,зачемкому-томожетпонадобитьсязагружатьв Excelмиллионстрок,еслиможновоспользоватьсябазойданных?Причи-наможетбытьв том,чтоработас Excelне требуетотпользователязнанийв областимоделированияданных,а сбазойданных –требует.

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

18 Введение в моделирование данных

Кпримеру,разделениеисходнойтаблицыиз12млнстрокнагруппыпопроизводителю, бренду, категории и  подкатегории с  сохранением дета-лизациипродаждодняпозволилонам сократить количество записейдо63 984,чтовполнеприемлемодлязагрузкиналистExcel.Написаниезапро-садлявыполненияподобнойгруппировки –этозадачадляотделаИТилиподходящегоредакторазапросов,есливы,конечно,не знаетеязыкSQL.Вы-полнивполучившийсязапрос,выможетеприступатьк анализу.На рис. 1.1можновидетьпервыенесколькострокпослеимпортаданныхв Excel.

Рис. 1.1.Данные о продажах, сгруппированные для облегчения анализа

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

Рис. 1.2.На основании данных в Excel легко можно создать сводную таблицу

Веритевыилинет,нотолькочтовыпостроилисвоюпервуюмодельдан-ных.Да,онасостоитвсегоизоднойтаблицы,нотемне менееэтомодельданных.А значит,выможетеисследоватьееаналитическийпотенциали ис-катьспособыдляегоповышения.У представленноймоделиестьодносерь-езноеограничение –онасодержитменьшестрок,чемисходнаятаблица.

Работас однойтаблицей 19

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

Такимобразом,выкосвенноограничилисвоианалитическиевозможно-сти.К примеру,выне сможетепровестианалитикупоцветутоваровнаосно-ванииполученнойтаблицы,посколькуинформацияобэтойхарактеристи-кепростоотсутствует.Добавитьстолбецк таблице –не проблема.Проблемав том, что придобавлении столбцов будет автоматически увеличиватьсяразмертаблицыкакв ширину(в количествестолбцов),таки в длину(в ко-личествестрок).На практикеоднастрокадляотдельнойкатегории –напри-мер,аудиотехники (Audio) –превратитсяв несколькозаписей,каждаяизкоторыхбудетсодержатьсвойцветдляэтойкатегории.

Аесливыне сможетезаранеерешить,какиестолбцывампригодятсядлявыполнениясрезов,товампридетсязагружатьвсе12млнстрок,а стакимобъемомExcelне справится.Именноэтомыимелив виду,когдаговорили,чтопотенциалExcelв отношениимоделированияданныхневелик.Ограни-чениенаколичествоимпортируемыхстрокделаетневозможнымпроведе-ниеанализабольшихобъемовданных.

Здесь вамнапомощьприходитPower Pivot.ИспользуяPower Pivot, выне будетеограниченымиллиономстрок.Фактическиколичествозаписей,загружаемыхв таблицуPowerPivot,ничемне ограничено.А значит,вылег-косможетеимпортироватьв своюмодельвсепродажии проводитьнаихоснованииболееглубокийанализ.

Примечание. Power Pivot доступен в  Excel с  версии 2010 в  ка-честве внешней надстройки, а  начиная с  Excel 2013 включен в  основной пакет. В  Excel 2016 и  следующих версиях Microsoft ввела новый термин для описания моделей Power Pivot: мо-дель данных Excel (Excel Data Model). Однако термин Power Pivot по-прежнему широко используется.

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

20 Введение в моделирование данных

Рис. 1.3.Если в модель данных загружены все столбцы, можно строить более интересные сводные таблицы

Этогопримерадостаточно,чтобыусвоитьпервыйурок,касающийсямо-делиданных:размер имеет значение, поскольку он напрямую связан с грану-лярностью.Но чтотакоегранулярность?Гранулярность(granularity) –однаизважнейшихконцепций,описываемыхв этойкниге,и мыпостараемсяпознакомить вас с  ней как можно раньше. Далее в  книге мы углубимсяв изучениеэтойконцепции,а сейчаспозвольтедатьпростоеописаниетер-минагранулярность.В первомнабореданныхвысгруппировалиинформа-циюпокатегориии подкатегории,пожертвовавдетальнымиданнымирадиуменьшенияразмератаблицы.Говорятехническимязыком,выустановилигранулярностьтаблицынауровнекатегориии подкатегории.Можетеду-матьо  гранулярности какобуровнедетализацииданных.Чемвышегра-нулярность,темболеедетализированнаяинформациябудетдоступнадляанализа.В последнемрассмотренномнабореданных,загруженномв PowerPivot,гранулярностьустановленанауровнетовара(насамомделеонадажевыше – на уровне каждой отдельной продажи), тогда как в  предыдущемпримеребыланауровнекатегориии подкатегории.Возможностидляде-тального анализа напрямую связаны с  количеством доступных столбцовв таблице, а  значит, с  ее гранулярностью.Вы уже знаете,чтоувеличениеколичествастолбцовнепременноведетк увеличениюколичествастрок.

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

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

Работас однойтаблицей 21

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

Рис. 1.4.Информация о покупателях и товарах содержится в одной таблице

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

AverageYearlyIncome := AVERAGE ( Sales[YearlyIncome] )

Созданнаямераотличноработает,и выможетеиспользоватьеев свод-нойтаблице,какэтопоказанонарис. 1.5.Здесьмывидимсреднийгодовойдоходпокупателейбытовойтехники(HomeAppliances)разныхбрендов.

Рис. 1.5.Анализ среднего годового дохода покупателей бытовой техники

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

22 Введение в моделирование данных

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

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

ЕсливырешитепойтипопутиDAX,можнодлявычислениясреднегого-дового дохода воспользоваться следующей формулой, довольно сложнойдляпонимания:

CorrectAverage := AVERAGEX ( SUMMARIZE ( Sales; Sales[CustomerKey]; Sales[YearlyIncome] ); Sales[YearlyIncome])

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

Рис. 1.6.При взгляде на результаты вычислений видно, как далеки мы были от истины

Работас однойтаблицей 23

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

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

� вероятно, вам было бы непросто понять, что произведенные вамирасчеты неверны. В  нашем примере достаточно одного взгляда нарис. 1.6,чтобызаподозритьналичиеошибки –врядлиу всехнашихпокупателейсреднийгодовойдоходпревышает2млндолларов.Од-нако для более сложных расчетов выявить неточность может бытьвесьмапроблематично,чтоприведетк появлениюошибокв вашейитоговойотчетности.

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

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

24 Введение в моделирование данных

ввеДение в мОДель ДанныхИзпредыдущейглавывыузнали,чтомодельданных,состоящаяизоднойтаблицы, таит в  себе проблему в  отношении определения правильногоуровнягранулярности.ПользователиExcelзачастуюприменяюттакиемо-дели,посколькудоверсииExcel2013строитьсводныетаблицыможнобылотольконаихосновании.В Excel2013компанияMicrosoftввелапонятиемо-делиданныхExcel, чтобыможнобыло загружать сразунесколькотаблици создаватьсвязимеждуними –этопозволилопользователямпрограммыстроитьоченьмощныемоделиданных.

Чтожетакоемодельданных?Модель данных –этопростонабортаблиц,объединенныхсвязями(relationships).Модельизоднойтаблицы –тожемо-дель,хотьи не представляющаябольшогоинтереса.Именносвязи,объеди-няющиенесколькотаблиц в  составе единоймоделиданных,и делают еестольмощнойи удобнойдляанализа.

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

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

Длязнакомствас концепциеймоделиданныхзагрузитетаблицыProductи  Salesиз базыданныхContoso в модельExcel.После этого выувидитедиаграммукакнарис. 1.7 –сдвумятаблицамии содержащимисяв нихстолбцами.

Примечание. В Power Pivot вы можете получить доступ к диаграм-ме связей. Для этого выберите вкладку Power Pivot на ленте Excel и нажмите Manage (Управление). Далее на вкладке Home (В нача-ло) окна Power Pivot нажмите Diagram View (Представление диа-граммы) в группе View (Просмотр).

Введениев модельданных 25

Рис. 1.7.В модель данных вы можете загружать несколько таблиц

Двенесвязанныетаблицыв представленномпримереещене являютсяполноценноймодельюданных.Покаэтопростодветаблицы.Чтобыпреоб-разоватьихв осмысленнуюмодель,необходимоустановитьсвязимеждута-блицами.В нашемпримереобетаблицысодержатобщееполеProductKey.В таблицеProductэтотстолбецпредставляетсобойпервичный ключ(primarykey),чтопредполагаетуникальностьзначенийв неми возможностьиден-тифицироватьпонимтовары. В таблице Sales этот столбец служитинойцели,а именнодляидентификациипроданноготовара.

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

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

26 Введение в моделирование данных

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

� таблица Sales называется таблицей-источником (source table).СвязьберетсвоеначалоизтаблицыSales.Этоозначает,чтодлятого,чтобыполучитьтовар,вывсегданачинаетес продажи.Получивзна-чениеключевогополятовараизтаблицыSales,выищетеегов табли-цеProduct.Теперьвызнаете,с какимтоваромимеетедело,а такжеполучаетедоступковсемегоатрибутам;

� таблицаProductназываетсяцелевой(targettable)дляэтойсвязи.Вы начинаетепоискс таблицыSalesи переходитек Product.Значит,таблицаProductи естьцельустанавливаемойсвязи;

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

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

� столбец ProductKey присутствует в  обеих таблицах. При этомв таблицеProductэтоключевоеполе,а втаблицеSales –нет.По дан-ной причине применительно к  таблице Productмы называем полеProductKeyпервичнымключом,тогдакакв таблицеSalesоноимену-етсявнешнимключом.Подвнешним ключом(foreignkey)подразуме-ваетсястолбец,указывающийнапервичныйключв другойтаблице.

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

ИспользуяExcelи PowerBI,выимеетевозможностьсоздаватьсвязипу-тем перетаскиваниямышью поля, являющегося внешним ключом (в  на-шем случае это ProductKey в  таблице Sales), к  первичному ключу (у  насэтоProductKey в таблицеProduct).Сделав это, вы заметите, чтониExcel,ниPowerBIне используютстрелкидляобозначениясвязей.Вместоэтогонаконцахлинии,соединяющейтаблицы,выобнаружитеединичку(один)и звездочку(многие).На рис. 1.8представленасоответствующаядиаграммаизPowerPivot.Заметьте,чтопосерединелиниивсежеприсутствуетстрелка,

Введениев модельданных 27

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

Рис. 1.8.Связь между таблицами представлена линией с индикаторами на концах («1» для одного и «звездочка» для многих)

Послесвязываниятаблицвыможетеосуществлятьсуммированиезна-ченийв таблицеSales,делаясрезыпостолбцамизтаблицыProduct.К при-меру,какпоказанонарис. 1.9,вы можетеиспользоватьцветтовара(стол-бецColorизтаблицыProduct,каквиднонарис. 1.8)в качествесрезаприсуммированиипоколичествупроданныхтоваров(столбецQuantityв таб-лицеSales).

Примечание. Если вы не видите вкладку Power Pivot в Excel, вероят-но, произошла какая-то ошибка, в результате чего надстройка была отключена. Чтобы вновь активировать ее, нажмите на вкладке File (Файл) и выберите пункт Options (Параметры) на левой панели. В ле-вой части окна Excel Options (Параметры Excel) нажмите на Add-Ins (Надстройки). После этого раскройте выпадающий список Manage (Управление), выберите пункт COM Add-Ins (Надстройки COM) и на-жмите Go  (Перейти). В окне COM Add-Ins (Надстройки для модели компонентных объектов (COM)) выберите Microsoft Power Pivot for Excel. В том случае, если этот пункт выбран, снимите выделение. Пос-ле этого нажмите OK. Если вы снимали выделение пункта Microsoft Power Pivot for Excel, вернитесь в окно COM Add-Ins и снова выбери-те его. Вкладка Power Pivot должна появиться на ленте.

28 Введение в моделирование данных

Рис. 1.9.После связывания таблиц вы можете осуществлять срезы по значениям одной таблицы, используя столбцы из другой

Этобылвашпервыйпримермоделиданных,состоящейиздвухтаблиц.Какмыужесказали,модельданных –этопростонабортаблиц (в нашемслучаеSalesи Product),объединенныхсвязями.Передтемкакидтидальше,давайтеуделимещенемноговременигранулярности –наэтотразприме-нительнок моделиизнесколькихтаблиц.

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

Посколькутеперьу васв наличииестьдветаблицы,тои гранулярностейбудетдве.В таблицеSalesгранулярностьустановленанауровнепродажи,а втаблицеProduct –науровнетовара.Фактическигранулярностькаккон-цепцияотноситсяк таблице,а нек моделиданныхв целом.Когдав вашеймоделинесколькотаблиц,выдолжныпозаботитьсяо том,чтобыв каждойизнихбыланастроенагранулярность.Дажееслисценарийс наличиемне-сколькихтаблицкажетсявамболеесложнымпосравнениюс единственнойтаблицей,модельюданных, созданнойнаих основе, будет гораздолегчеуправлять,а гранулярностьперестанетбытьпроблемой.

Болеетого,в этомслучаесовершенноестественнобудетустановитьгра-нулярность в  таблице Sales на уровне продажи, а  в таблице Product – науровнетовара.Вспомнитепервыйпримеризэтойглавы.У насбылаоднатаблица продаж с  гранулярностью, установленной на уровне категориии подкатегориитовара.Причинойбылото, чтоинформацияо категориии подкатегориитоварахраниласьв таблицеSales.Инымисловами,вам не-обходимо было принимать решение по поводу гранулярности, потому что

Введениев модельданных 29

данные располагались не на своем месте.Когдавсенаходитсятам,гденужно,гранулярностьужене доставляеттакиххлопот.

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

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

Если внимательно посмотреть на таблицу Product, можно заме-тить,чтов нейотсутствуюткатегорияи подкатегория.Затоесть столбецProductSubcategoryKey,названиекоторогоговорито том,чтоэтовнешнийключ,ссылающийсянадругуютаблицу(гдеэтополебудетпервичнымклю-чом) с  перечислением подкатегорий товаров. Фактически в  базе данныхкатегории и  подкатегории товаров разделены на две таблицы. Загрузивв модельданныхобетаблицыи правильнопостроивсвязи,выувидитенадиаграммев PowerPivotсхему,показаннуюнарис. 1.10.

Рис. 1.10.Категории и подкатегории товаров хранятся в разных таблицах, к которым можно обратиться посредством связей

Как видите, информация о  товарах разнесена сразу на три таблицы:Product,ProductSubcategoryи ProductCategory.Такимобразом,образуетсяце-

30 Введение в моделирование данных

лаяцепочкасвязей,начинаяс Product,черезProductSubcategoryи кProductCategory.

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

Утакойтехникипроектированиямоделиданныхестьсвоеназвание –нор-мализация (normalization). Говорят, что атрибуттаблицы (вроде нашей ка-тегориитовара)нормализован,еслионвынесенв отдельнуютаблицу,а наегоместопомещенключ,ссылающийсянаэтутаблицу.Этоширокораспро-страненнаятехника,которуюиспользуютархитекторыбазданныхприпро-ектированиимоделей.Обратнаятехника,заключающаясяв храненииатри-бутовв таблице,которойонипринадлежат,носитназваниеденормализация(denormalization).В денормализованнойтаблицеодини тотжеатрибутмо-жетвстречатьсямножествораз,и принеобходимостиизменитьегоназваниевампридетсякорректироватьвсестроки,содержащиеэтотатрибут.К при-меру,в нашеймоделиатрибутцветатовара(Color)денормализован,а значит,значениеRedбудетповторятьсявовсехстрокахс краснымитоварами.

Вас,должнобыть,интересует,почемуразработчикбазыданныхContosoрешилхранитьатрибутыкатегориии подкатегориитоваровв отдельныхтаблицах(тоестьв нормализованномвиде),а цвет,наименованиепроизво-дителяи бренд –в таблицеProduct(безприменениянормализации).В этомконкретномслучаеответпрост:Contoso –этодемонстрационнаябазадан-ных,и наеепримерехотелосьпоказатьвсевозможныетехники.На прак-тике вы будете встречаться как с  преимущественно нормализованными,таки сденормализованнымимоделямив зависимостиотособенностейис-пользованиябазыданных.Будьтеготовык тому,чтоодниатрибутыбудутнормализованы,а другие –нет.Этовполнеприемлемодлямоделированияданных,посколькуздесьестьразныеметодыи подходы.К томужевполневозможно,чторазработчикбазыданныхбылвынужденприниматьтоилииноерешениепоструктуремоделиужев процессеработы.

Моделис высокойстепеньюнормализацииобычноиспользуютсяв си-стемах обработки транзакций в  реальном времени (online transactionalprocessingsystems –OLTP).Такиебазыданныхспроектированыспециальнодлявыполненияежедневныхоперативныхдействийвродеобслуживанияподготовки счетов, размещения заказов, доставки товаров или создания

Введениев модельданных 31

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

OLTP-системызачастуюнасчитываютсотнитаблиц,посколькупочтикаж-дыйатрибутхранитсяв отдельнойтаблице.Применительнок товарам,допус-тим,можнобылобызавеститаблицыдляхраненияпроизводителей,брендов,цветови прочего.В результатехранениепростойсущностивродетовароввы-лилосьбыв 10–20отдельныхтаблиц,объединенныхсвязями.Разработчикта-койбазыданныхс гордостьюназвалбысвоедетище«хорошоспроектирован-ноймодельюданных»и,несмотрянанекоторыееестранности,былбыправ.ДляOLTP-системнормализацияпочтивсегдабудетоптимальнымвыбором.

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

Рис. 1.11.В списке полей сводной таблицы, построенной на основании нормализован-ной модели данных, слишком много таблиц – легко запутаться

Информацияо товарах хранится в трехтаблицах,и  все онипредставле-ныв спискеполейсводнойтаблицы.Хужетого,в таблицахProductCategoryи ProductSubcategoryсодержитсявсегопоодномустолбцу.Такчтохотьнор-

32 Введение в моделирование данных

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

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

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

Для ответа на этот вопрос нет какого-то единого правила. Вы должныинтуитивнодойтидотакогоуровняденормализации,прикоторомструк-туратаблицыстанетсамодостаточнойи будетполностьюописыватьхраня-щуюсяв нейсущность.В нашемпримеренеобходимоперенестистолбцыProduct Category и  Product Subcategory в  таблицу Product, поскольку ониявляютсяатрибутамитоварови вамне хотелосьбывидетьихв отдельныхтаблицах.Приэтомне следуетденормализовыватьинформациюо товарахв таблицеSales,посколькутоварыи продажи –эторазныесущности.Кон-кретнаяпродажанапрямуюсвязанас товаром,нонельзясказать,чтоонасоставляетс нимединоецелое.

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

ввеДение в Схему «звезДа»Досихпормыимелиделос оченьпростымимоделямиданных,состоящимиизтоварови продаж.В реальноммиретакиемоделипрактическине встре-

Введениев схему«звезда» 33

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

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

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

� измерения.Измерение (dimension) является информационным ак-тивом:товар,покупатель,сотрудникилипациент.Измерениясодер-жататрибуты(attribute).К примеру,атрибутамитовараявляютсяегоцвет,категория,подкатегория,производительи цена.У пациентаэтоимя,адреси датарождения;

� факты.Факт(fact) –этособытие,в котороевовлеченонесколькоиз-мерений.В базеданныхContoso,например,фактомявляетсяпродажатовара.В этомсобытииучаствуютсамтовар,покупатель,датапрода-жи и другиеизмерения.В фактахтакжесодержатсямеры(measures) –числовыепоказатели,которыеможноагрегироватьприанализесо-стояниябизнеса.Этоможетбытьколичествоилисуммапроданноготовара,размерскидкии прочее.

Послемысленногоразделениятаблицнадвекатегориистановитсяясно,чтофактысвязаныс измерениями.Каждомуотдельномутоварув таблицепродажсоответствуетнесколькострок.Инымисловами,междутаблицамиSalesи Productестьсвязь,в которойProductсоответствуетстороне«один»,а Sales –стороне«многие».Есливырасположитенадиаграммев PowerPivotвсеизмерениявокругединственнойтаблицыфактов,тополучитетипич-нуюформузвезды,показаннуюнарис. 1.12.

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

34 Введение в моделирование данных

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

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

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

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

Введениев схему«звезда» 35

Важнопривыкнутьк схеме«звезда».Посредствомнеевашиданныебудутпредставленыв наиболееудобномвиде.Крометого,терминология,приме-няемаяв этойсхеме,оченьширокоиспользуетсяв сферебизнес-аналитики(BI),и этакнига –не исключение.Мы частоупотребляемтерминыизме-рениеи таблицафактов,чтобыподчеркнутьразницумеждумаленькимии большимитаблицами.В следующейглавемыбудемговоритьо главныхи подчиненныхтаблицах,попутнорешаязадачуустановлениясвязеймеж-дуразнымитаблицамифактов.И ктомумоментумыбудемсчитать,чтовыужехорошоусвоилиразницумеждутаблицейфактови измерением.

Стоитотметитьнескольковажныхособенностейустройствасхемы«звез-да».Однойизнихявляетсято,чтотаблицыфактовмогутбытьобъединенысвязямис измерениями,тогдакакизмеренияне должныбытьсвязанымеж-дусобой.Чтобыпроиллюстрироватьважностьэтогоправилаи показать,чтобывает,еслиемуне следовать,предположим,чтомыдобавилив модельно-воеизмерениеGeography,содержащеегеографическиеданные,такиекакго-род,штати страну/регионрождения.ОбанашихизмеренияStoreи Customerмогутбытьобъединенысвязьюс Geography.В итогеу насмоглабыполучить-сямодель,представленнаянарис. 1.13в видедиаграммыPowerPivot.

Рис. 1.13.Новое измерение Geography объединено связями с Customer и Store

36 Введение в моделирование данных

Вэтоймоделинарушеноправило,запрещающееналичиесвязеймеждуизмерениями.По сути,всетритаблицы –Customer,Storeи Geography –яв-ляютсяизмерениями,ноприэтомонисвязаны.Чтоплохогов такоймоде-ли?А то,чтоонавноситнеоднозначность(ambiguity).

Представьте,чтовыделаетесрезданныхпогородув надеждепосчитатьколичествопроданныхтоваров.В результатезапросможетпройтипосвязимеждутаблицамиGeographyи Customerи вернутьколичествотоваров,про-данноепокупателямизвыбранногогорода.А еслипройтипосвязимеждуGeographyи Store,томыполучимпродажисоскладаизэтогогорода.Естьи третийвариант –использоватьобесвязии выяснить,какоеколичествотоваровбылопроданопокупателюизвыбранного города, сосклада,рас-положенноготамже.У насполучиласьнеоднозначнаямодельданных,и по-нять,какиецифрыонавыдает,крайнепроблематично.И этоне толькотех-ническаяпроблема,нои логическая.Пользователь,которыйбудетработатьс этоймоделью,будетсбитс толкуи не сможетпонять,чтозначатцифрыв отчетах.И именнопопричинееенеоднозначностиниExcel,ниPowerBIне позволятвамсоздатьподобнуюмодель.В следующихглавахмыбудемрассматриватьвопросынеоднозначностимоделейболееподробно.Покажеважнознать,чтоExcel(а именнов немсоздавалсяэтотпример)сделалсоз-даннуюсвязьмеждутаблицамиStoreи Geographyнеактивной,чтобыне до-пуститьнеоднозначностив моделиданных.

Какразработчикмоделивыдолжнывсемиспособамистаратьсяизбегатьнеоднозначности.Какизбавитьрассматриваемуюнамимодельотнеодно-значности?Ответоченьпрост.Необходимопровестиденормализациюмо-дели –перенестинужныеколонкиизтаблицыGeographyв Storeи Customer,а  само измерение с  географией удалить из модели. Также вы могли бывключить в  измерения колонку ContinentName с  названием континента,и получиласьбымодель,представленнаянарис. 1.14.

Проведяденормализациюмодели,мыизбавилиееотнеоднозначности.Теперьпользователисмогутосуществлятьсрезыданных,используягеогра-фическиепризнакиизтаблицыCustomerилиStore.В итогеGeography –этотожеизмерение,нодлявозможностиполноценногоиспользованиясхемы«звезда»нампришлосьегоденормализовать.

Введениев схему«звезда» 37

Рис. 1.14.После денормализации колонок из Geography модель вернулась к схеме «звезда»

Напоследок хотелось бы познакомить вас с  еще одним термином, ко-торыйбудетчастоиспользоватьсяв книге, –снежинка.Схема «снежинка»(snowflakeschema)являетсяразновидностью«звезды»с темисключением,чтонекоторыеизмеренияне связаныс таблицейфактовнапрямую.Вместоэтогоониобъединеныс нейпосредствомдругихизмерений.Вы ужевстре-чалисьс такойсхемойнастраницахэтойкниги,и мывновьпредставимвамеенарис. 1.15.

Нарушает ли схема «снежинка» правило, запрещающее установку свя-зей между измерениями? В  каком-то смысле да, ведь таблицы ProductSubcategoryи Productпредставляютсобойизмерения,и приэтомониобъ-единены связью.Отличие этого примера от предыдущего состоит в  том,что эта связь является единственной, соединяющей таблицу ProductSubcategory с другимиизмерениями,объединеннымис таблицейфактов,илитаблицейProduct.ТакчтовыможетерассматриватьтаблицуProductSubcategoryкакизмерение,объединяющеев группыразличныетовары,нопри этом не  группирующее содержимое других измерений или таблицыфактов.То жесамоевернои длятаблицыProductCategory.Такимобразом,

38 Введение в моделирование данных

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

Рис. 1.15.Измерения Product Category, Subcategory и Product образуют цепочку связей в виде снежинки

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

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

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

Введениев схему«звезда» 39

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

Многиеразработчикиприпроектированиимоделиданныхпредпочита-ютиспользоватьпрефиксDimдляназванийизмеренийи Factдлятаблицфактов. Так что сегодня зачастуюможно встретить таблицы с  названия-миDimCustomerи FactSales.Другиепредпочитаютделатьразличиямеждупредставлениямии физическимитаблицами,используяпрефиксыVw иTblсоответственно. А  кто-то считает, что буквенного обозначения недоста-точнодляполнойясностии добавляетцифры –получаетсячто-товродеTbl_190_Sales. Продолжать можно до бесконечности, но суть вы уловили.Стандартовименованиямасса,и укаждогоестьсвоиплюсыи минусы.

Примечание. Можно поспорить с уместностью применения подоб-ных стандартов при именовании объектов в базах данных, но эта дискуссия выйдет далеко за пределы данной книги. Так что мы ограничимся обсуждением использования соглашений об имено-вании в моделях данных, которые вы создаете и просматриваете в Power BI и Excel.

Вы не  обязаны при именовании объектов следовать каким-либо тех-ническимстандартам –достаточнобудетздравогосмыслаи обеспечениялегкости использования в  дальнейшем. Например, мало кому доставитудовольствиеработас модельюданных,в которойтаблицыносятназва-нияVwDimCstmrилиTbl_190_FactShpmt. Это очень странныеи малопо-нятныенаборысимволов,но,признаться,мыдосихпорвстречаемсяс по-добнымиименамиобъектовв моделяхданных.И этомыговоримтолькоо правилахименованиятаблиц.Когдаречьзаходито столбцах,всестано-вится совсемплохо.Единственныйнашсоветзаключаетсяв том,чтобыиспользоватьлегкочитающиесяназвания,ясноописывающиеизмерениеилитаблицуфактов.

На протяжении лет мы спроектировали множество аналитических си-стеми заэтовремявыработалиоченьпростойсводправилпоименованиютаблици столбцов:

� наименованиеизмерениядолжносостоятьтолькоизназванияактивав единственномилимножественномчисле.Так,к приме-ру,таблицасоспискомпокупателейможетназыватьсяCustomerилиCustomers.Информацияо товарахдолжнахранитьсяв таблицес на-

40 Введение в моделирование данных

званиемProductилиProducts.Мы считаем,чтоединственноечислолучшеподходитдляименованияизмерений,посколькуоноидеальносочетаетсяс запросаминаестественномязыкев PowerBI;

� еслиназваниеактивасостоитизнесколькихслов,используйтедляихразделенияпрописныебуквы.К примеру,категориитова-ровмогутхранитьсяв таблицес названиемProductCategory,а странаотгрузкиможетименоватьсяCountryShipилиCountryShipment.Вмес-то разделения слов прописными буквами допустимо использоватьобычные пробелы  – например, таблица может называться ProductCategory.Здесьестьтолькоодинминус –коднаязыкеDAXможетне-многоусложниться.Но всеэтонавашеличноеусмотрение;

� дляименитаблицыфактовнеобходимоиспользоватьназваниефактическойоперациии всегдаприменятьмножественноечис-ло.Так,фактыпродажможнохранитьв таблицес названиемSales,а фактызакупок, каквыужедогадались, –втаблицеPurchases.Есливыбудетеиспользоватьдляфактовисключительномножественноечисло, то при взгляде на модель данных вам будет представлять-ся один покупатель (из таблицы Customer) со множеством продаж(изтаблицыSales),а природасвязи «один ко многим»будетчитатьсяестественнымобразом;

� избегайтеиспользованияслишкомдлинныхименобъектов.На-звания вроде CountryOfShipmentOfGoodsWhenSoldByReseller могутприводитьв замешательство.Никомуне интереснобудетчитатьта-киедлинныеимена.Вместоэтоголучшеподобратьуместнуюаббре-виатуру,попутноисключивлишниеслова;

� избегайтеиспользования слишкомкороткихимен. Вселюбятиспользоватьв своейречисокращения.И еслив повседневномоб-щенииэтоприемлемои забавно,тов отчетахчастобываетнеумест-нои вноситнеразбериху.К примеру,вымоглибыиспользоватьдляобозначения страныотгрузкидляторговыхпосредников (countryofshipmentforresellers)аббревиатуруCSR,ноеебудеточеньтруд-нозапомнитьтем,ктоне работаетс вамиизодняв день.Помнитео том,чтоотчетымогутиспользоватьсясамымиразнымипользо-вателями,многиеизкоторыхне имеютпонятияо привычныхдлявассокращениях;

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

Пониманиеважностиименованияобъектов 41

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

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

заключениеВэтойглавевыпознакомилисьс основамимоделированияданных,а именно:

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

� разница между моделью с  одной таблицей и  несколькими состоитв том, что во втором случаетаблицыобъединенымежду собойпо-средствомсвязей;

� любаясвязьхарактеризуетсясторонойс однимэлементоми многи-ми –этотпоказательговорито том,сколькостроквыобнаружите,про-следовавпосвязив этомнаправлении.Посколькуодинтоварможетприсутствоватьсразув несколькихпродажах,в соответствующейсвя-зитаблицаProductбудетпредставлятьодинэлемент,а Sales –многие;

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

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

� денормализованнаямодельданныххарактеризуетсямножествомпо-вторенийзначенийв строках(например,словоRed(красный)в такоймоделиможетвстречатьсямногократно –длякаждоготоваракрасногоцвета),ноприэтомсодержитменьшееколичествотаблиц;

42 Введение в моделирование данных

� нормализованные модели данных обычно используются в  OLTP-системах,тогдакакденормализациязачастуюприменяетсяк моде-лям,предназначеннымдляанализаинформации;

� втипичнойаналитическоймоделиможнопровестичеткиеразличиямежду информационными активами (измерениями) и  событиями(фактами).Разделяясущностинаизмеренияи факты,мыв конечномсчетевыстраиваемструктурумоделив видезвезды.Схема«звезда»является наиболее распространенной архитектурой аналитическихмоделейданныхпооднойпростойпричине –онаотличноработаетв подавляющембольшинствеслучаев.

Заключение 43

top related