УДК 004.424 ББК 32.372 Ф43 Альберто Феррари и Марко Руссо · Ф43...
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,зайдя на страницу книги, и оставить комментарий в разделе «Отзывыи рецензии».Такжеможнопослатьписьмоглавномуредакторупо адресу[email protected],приэтомнапишитеназваниекнигив темеписьма.
Если есть тема, в которой вы квалифицированы, и вы заинтересова-ныв написанииновойкниги,заполнитеформуна нашемсайтепо адресуhttp://dmkpress.com/authors/publish_book/илинапишитев издательствопо адресу[email protected].
СпиСОк ОпечатОкХотя мы приняли все возможные меры для того, чтобы удостоверитьсяв качественашихтекстов,ошибкивсеравно случаются.Есливынайдетеошибкув однойизнашихкниг –возможно,ошибкув текстеилив коде, –мыбудемоченьблагодарны,есливысообщитенамо ней.Сделавэто,выизбавитедругихчитателейотрасстройстви поможетенамулучшитьпо-следующиеверсииэтойкниги.
Есливынайдетекакие-либоошибкив коде,пожалуйста,сообщитео нихглавномуредакторупо адресу[email protected],и мыисправимэтов следующихтиражах.
нарушение автОрСких правПиратствов интернетепо-прежнемуостаетсянасущнойпроблемой.Изда-тельство«ДМКПресс»оченьсерьезноотноситсяк вопросамзащитыавтор-скихправи лицензирования.Есливыстолкнетесьв интернетес незаконновыполненнойкопиейлюбойнашейкниги,пожалуйста,сообщитенамадрескопиииливеб-сайта,чтобымымоглиприменитьсанкции.
Пожалуйста,свяжитесьс намипо адресуэлектроннойпочты[email protected]соссылкойна подозрительныематериалы.
Мывысокоценимлюбуюпомощьпо защитенашихавторов,помогаю-щуюнампредоставлятьвамкачественныематериалы.
Введение
Пользователи 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поадресу:[email protected].
Отметим,чтоуслугипоподдержкепрограммногообеспечения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