змест
Амаль на кожным трэнінгу Power Query, калі мы даходзім да таго, як абнаўляць створаныя запыты, і людзі бачаць, як новыя даныя замяняюць старыя пры абнаўленні, адзін са слухачоў пытаецца ў мяне: «ці можна пераканацца, што пры абнаўленні старыя даныя захоўваюцца таксама дзесьці захоўваліся і была бачная ўся гісторыя абнаўленняў?
Ідэя не новая, і стандартным адказам на яе будзе "не" - Power Query па змаўчанні настроены на замену старых даных новымі (што патрабуецца ў пераважнай большасці выпадкаў). Аднак пры вялікім жаданні можна абыйсці гэтае абмежаванне. А метад, як вы ўбачыце пазней, вельмі просты.
Разгледзім наступны прыклад.
Выкажам здагадку, што ў якасці ўваходных дадзеных у нас ёсць файл ад кліента (назавем яго, скажам, крыніца) са спісам прадуктаў, якія ён хоча купіць у выглядзе «разумнай» дынамічнай табліцы пад назвай дадатак:
У іншым файле (назавем яго па аналогіі Прымач) мы ствараем просты запыт для імпарту табліцы з прадуктамі з Source праз Дадзеныя – Атрымаць даныя – З файла – З кнігі Excel (Даныя — Атрымаць даныя — З файла — З кнігі Excel) і загрузіце атрыманую табліцу на ліст:
Калі ў будучыні кліент вырашыць унесці змены ў заказ у сваім файле крыніца, затым пасля абнаўлення нашага запыту (пстрычкай правай кнопкай мышы або праз Дадзеныя – абнавіць усе) мы ўбачым новыя дадзеныя ў файле Прымач — усё стандартна.
Зараз давайце пераканаемся, што пры абнаўленні старыя даныя не замяняюцца новымі, а новыя дадаюцца да старых – і з даданнем даты і часу, каб можна было бачыць, калі гэтыя канкрэтныя змены былі зрабіў.
Крок 1. Даданне даты і часу да зыходнага запыту
Давайце адкрыем запыт дадатакімпарт нашых дадзеных з крыніцаі дадайце ў яго слупок з датай і часам абнаўлення. Для гэтага можна выкарыстоўваць кнопку Карыстальніцкі слупок таб Даданне слупка (Дадаць слупок — карыстальніцкі слупок), а затым увядзіце функцыю DateTime.LocalNow – аналаг функцыі TDATA (ЗАРАЗ) у Microsoft Excel:
Пасля націску на кнопку OK вы павінны атрымаць такі прыгожы слупок (не забудзьцеся ўсталяваць для яго фармат даты і часу з дапамогай значка ў загалоўку слупка):
Калі хочаце, то для таблічкі, загружанай на ліст для гэтай калонкі, вы можаце ўсталяваць фармат даты і часу з секундамі для большай дакладнасці (у стандартным фармаце трэба будзе дадаць двукроп'е і «ss»):
Крок 2: Запыт старых даных
Зараз давайце створым яшчэ адзін запыт, які будзе дзейнічаць як буфер, які захоўвае старыя даныя перад абнаўленнем. Вылучэнне любой ячэйкі выніковай табліцы ў файле Прымач, абярыце на ўкладцы Дата Каманда З табліцы/дыяпазону (Дадзеныя — з табліцы/дыяпазону) or З лісточкамі (З аркуша):
Мы нічога не робім з табліцай, загружанай у Power Query, мы называем запыт, напрыклад, старыя дадзеныя і націсніце Дадому — Закрыць і загрузіць — Закрыць і загрузіць у… — Толькі стварыць злучэнне (Дадому — Зачыніць&Загрузіць — Зачыніць&Загрузіць у… — Толькі стварыць злучэнне).
Крок 3. Аб'яднанне старых і новых дадзеных
Цяпер вернемся да нашага зыходнага запыту дадатак і дадаць да яго знізу старыя дадзеныя з папярэдняга запыту буфера з дапамогай каманды Дадому — Дадаць запыты (Галоўная — Дадаць запыты):
Гэта ўсе!
Засталося вярнуцца ў Excel праз Галоўная — зачыніць і спампаваць (Галоўная — Зачыніць і загрузіць) і паспрабуйце пару разоў абнавіць усю нашу структуру з дапамогай кнопкі абнавіць усе таб Дата (Дадзеныя — Абнавіць усе). Пры кожным абнаўленні новыя даныя не замяняюць старыя даныя, а перамяшчаюць іх ніжэй, захоўваючы ўсю гісторыю абнаўленняў:
Падобны прыём можна выкарыстоўваць пры імпарце з любых знешніх крыніц (інтэрнэт-сайтаў, баз дадзеных, знешніх файлаў і г.д.), каб захаваць старыя значэнні для гісторыі, калі вам гэта трэба.
- Зводная табліца для некалькіх дыяпазонаў даных
- Зборка табліц з розных файлаў з дапамогай Power Query
- Збор дадзеных з усіх аркушаў кнігі ў адну табліцу