{"id":31650,"date":"2016-12-06T10:44:32","date_gmt":"2016-12-06T09:44:32","guid":{"rendered":"https:\/\/nearshore-it.eu\/artykuly\/hurtownie-danych-a-narzedzia-self-service-business-intelligence\/"},"modified":"2024-09-30T06:26:09","modified_gmt":"2024-09-30T04:26:09","slug":"hurtownie-danych-a-narzedzia-self-service-business-intelligence","status":"publish","type":"post","link":"https:\/\/nearshore-it.eu\/pl\/artykuly\/hurtownie-danych-a-narzedzia-self-service-business-intelligence\/","title":{"rendered":"Hurtownie danych a narz\u0119dzia self-service Business Intelligence"},"content":{"rendered":"\n<div class=\"table-of-contents\">\n    <p class=\"title\">Przejd\u017a do:<\/p>\n    <ol>\n                    <li><a href=\"#proces-etl\">1.  Proces ETL<\/a><\/li>\n                    <li><a href=\"#dane-historyczne\">2.  Dane historyczne<\/a><\/li>\n                    <li><a href=\"#bi-bez-hurtowni-danych-self-service\">3.  BI bez hurtowni danych \u2013 self-service<\/a><\/li>\n                    <li><a href=\"#konsekwencje-self-service\">4.  Konsekwencje self-service<\/a><\/li>\n                    <li><a href=\"#bezpieczenstwo\">5.  Bezpiecze\u0144stwo<\/a><\/li>\n                    <li><a href=\"#Podsumowanie\">6.  Podsumowanie<\/a><\/li>\n            <\/ol>\n<\/div>\n\n\n<p class=\"has-text-align-left\">Z praktycznego punktu widzenia (i w znacznym skr\u00f3cie) hurtownia danych jest to baza danych, gromadz\u0105ca dane historyczne oraz dane bie\u017c\u0105ce z jednego b\u0105d\u017a wielu system\u00f3w \u017ar\u00f3d\u0142owych, kt\u00f3re maj\u0105 by\u0107 wykorzystywane do wszelkiego rodzaju analiz oraz raportowania. Najwa\u017cniejsz\u0105 warto\u015bci\u0105, jak\u0105 oferuj\u0105 hurtownie danych, jest tzw. <strong>jedna wersja prawdy<\/strong>. Co to znaczy? Bardzo cz\u0119stym problemem wyst\u0119puj\u0105cym w przedsi\u0119biorstwach jest to, \u017ce raporty czy te\u017c analizy, opisuj\u0105ce dany aspekt biznesu, s\u0105 tworzone w oparciu o inne systemy \u017ar\u00f3d\u0142owe. Zdarza si\u0119 nawet, \u017ce s\u0105 one tworzone przez r\u00f3\u017cnych specjalist\u00f3w wed\u0142ug odmiennych algorytm\u00f3w. Sprawia to rzecz jasna, \u017ce analizy i raporty mog\u0105 dawa\u0107 r\u00f3\u017cne wyniki \u2013 i jest to przyk\u0142ad doskonale obrazuj\u0105cy z\u0142amanie zasady \u201ejednej wersji prawdy\u201d. Hurtownia danych ma za zadanie tworzenie przep\u0142yw\u00f3w danych w taki spos\u00f3b, \u017ceby takich sytuacji unikn\u0105\u0107 i zapewni\u0107 rzetelne \u017ar\u00f3d\u0142o informacji. Dopiero posiadaj\u0105c takie wiarygodne \u017ar\u00f3d\u0142o wiedzy o procesach biznesowych, mo\u017cna podejmowa\u0107 w\u0142a\u015bciwe decyzje.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"proces-etl\">Proces ETL<\/h2>\n\n\n\n<p class=\"has-text-align-left\">Niezwykle istotn\u0105 kwesti\u0105, zwi\u0105zan\u0105 z analityk\u0105 biznesow\u0105, jest integracja danych \u017ar\u00f3d\u0142owych. W przypadku, kiedy przedsi\u0119biorstwo posiada wiele system\u00f3w przetwarzajacych dane, mo\u017ce doj\u015b\u0107 do sytuacji, \u017ce dane pomi\u0119dzy nimi b\u0119d\u0105 niesp\u00f3jne. Zadaniem hurtowni danych jest integracja danych, przy u\u017cyciu odpowiednich narz\u0119dzi, wydajnie wspieraj\u0105cych takie dzia\u0142ania. Niejednokrotnie jest tak, \u017ce dane z jednego systemu musz\u0105 by\u0107 dopasowane do danych z drugiego systemu lub wr\u0119cz przetransformowane. Dlatego specjali\u015bci Business Intelligence potrzebuj\u0105 oprogramowania umo\u017cliwiaj\u0105cego takie dzia\u0142ania, w zgodzie z regu\u0142ami biznesowymi danego przedsi\u0119biorstwa. Opr\u00f3cz mo\u017cliwo\u015bci dopasowania, narz\u0119dzia tego typu s\u0142u\u017c\u0105 do tworzenia proces\u00f3w migracji oraz integracji danych z system\u00f3w \u017ar\u00f3d\u0142owych do docelowej hurtowni danych \u2013 ca\u0142okszta\u0142t takich dzia\u0142a\u0144 nazywamy procesem ETL, czyli ekstrakcji, transformacji oraz \u0142adowania danych.<\/p>\n\n\n\n<p class=\"has-text-align-left\"><strong>Z procesem \u0142adowania danych do hurtowni danych nieod\u0142\u0105cznie wi\u0105\u017ce si\u0119 poj\u0119cie jako\u015bci danych<\/strong>. Jest to powszechny problem, kt\u00f3ry musi zosta\u0107 rozwi\u0105zany w\u0142a\u015bnie w procesie ETL. \u017beby zilustrowa\u0107 powszechno\u015b\u0107 wyst\u0119powania problem\u00f3w z jako\u015bci\u0105 danych, wyobra\u017amy sobie sytuacj\u0119, w kt\u00f3rej dane klienta wprowadzane s\u0105 r\u0119cznie do systemu \u017ar\u00f3d\u0142owego. W takim przypadku ryzyko pope\u0142nienia b\u0142\u0119du jest bardzo wysokie. Klasycznym przyk\u0142adem tego typu problemu jest nazwa miejscowo\u015bci, podawana na przyk\u0142ad w formularzach zam\u00f3wienia, gdzie niezb\u0119dne jest wprowadzenie adresu dostawy. Dane tego typu mog\u0105 by\u0107 wprowadzone na kilka, a nawet kilkadziesi\u0105t r\u00f3\u017cnych sposob\u00f3w np. D\u0105browa G\u00f3rnicza mo\u017ce by\u0107 zapisana bez polskich znak\u00f3w jako \u201eDabrowa Gornicza\u201d, z my\u015blnikiem \u201eD\u0105browa-G\u00f3rnicza\u201d lub np. poprzez po\u0142\u0105czenie obu sposob\u00f3w \u201eDabrowa-Gornicza\u201d. Jak wida\u0107, ilo\u015b\u0107 kombinacji jest bardzo wysoka, a kreatywno\u015b\u0107 u\u017cytkownik\u00f3w pod tym k\u0105tem nie zna granic. W idealnym \u015bwiecie chcieliby\u015bmy, \u017ceby aplikacja kliencka skutecznie uniemo\u017cliwia\u0142a wprowadzanie tego typu b\u0142\u0119d\u00f3w, w praktyce jest to jednak bardzo trudne, wdra\u017caj\u0105c systemy analityczne, musimy wi\u0119c si\u0119 liczy\u0107 z takimi sytuacjami i w wydajny spos\u00f3b te wyj\u0105tki obs\u0142u\u017cy\u0107. Dlatego w\u0142a\u015bnie nowoczesne oprogramowanie ETL, obs\u0142uguj\u0105ce hurtownie danych, posiada odpowiednie mechanizmy, pozwalaj\u0105ce wychwytywa\u0107 i eliminowa\u0107 b\u0142\u0119dy obni\u017caj\u0105ce jakos\u0107 danych.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"dane-historyczne\">Dane historyczne<\/h2>\n\n\n\n<p class=\"has-text-align-left\">Kolejn\u0105 wa\u017cn\u0105 funkcj\u0105 hurtowni danych jest przechowywanie danych historycznych. W przypadku wszelkiego rodzaju analiz i raport\u00f3w istotny jest przecie\u017c kontekst czasowy. Niekt\u00f3re dane musz\u0105 wi\u0119c by\u0107 historyzowane. Np. w przypadku, gdy analizie poddawana jest sprzeda\u017c poszczeg\u00f3lnych przedstawicieli handlowych, ale jeden z nich przeni\u00f3s\u0142 si\u0119 z jednego wojew\u00f3dztwa do innego. W takiej sytuacji, przy braku odpowiedniego podej\u015bcia do danych historycznych, utracimy informacje o poprzednim miejscu dzia\u0142alno\u015bci przedstawiciela, a jego wyniki mog\u0105 przyk\u0142adowo zosta\u0107 uwzgl\u0119dnione w jego nowej lokalizacji. Oczywi\u015bcie nie wszystkie dane musz\u0105 by\u0107 w pe\u0142ni historyzowane i, zgodnie z dobrymi praktykami tworzenia hurtowni danych, tworzone si\u0119 r\u00f3\u017cne poziomy historyzacji, zwane wymiarami wolnozmiennymi.<\/p>\n\n\n\n<p class=\"has-text-align-left\">Przyk\u0142adow\u0105 architektur\u0119 rozwi\u0105za\u0144 korporacyjnych, opartych na narz\u0119dziach Business Intelligence (w tym konkretnym przypadku o oprogramowanie firmy Microsoft) przedstawiono na poni\u017cszym diagramie. Celem tej wizualizacji nie jest om\u00f3wienie ka\u017cdego z wymienionych element\u00f3w, ale zrozumienie z\u0142o\u017cono\u015bci i modularno\u015bci system\u00f3w tego typu. Oczywi\u015bcie nie wszystkie elementy poni\u017cszej architektury musz\u0105 by\u0107 u\u017cyte w implementacji.<\/p>\n\n\n\n<div style=\"height:36px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/BI-hurtownia-danych.jpg\" alt=\"BI-hurtownia-danych\" class=\"wp-image-11425\" title=\"\"><\/figure>\n<\/div>\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-text-align-left\"><\/p>\n\n\n\n<p class=\"has-text-align-left\">Schemat systemu Business Intelligence, wykorzystuj\u0105cego hurtowni\u0119 danych<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"bi-bez-hurtowni-danych-self-service\">BI bez hurtowni danych \u2013 <i>self-service<\/i><\/h2>\n\n\n\n<p class=\"has-text-align-left\">W tym momencie mo\u017cna ju\u017c zada\u0107 fundamentalne dla tego artyku\u0142u pytanie: czy mo\u017cliwa jest implementacja systemu Business Intelligence bez hurtowni danych? Je\u015bli znamy rynek i dost\u0119pne na nim narz\u0119dzia, odpowied\u017a staje si\u0119 prosta i jednoznaczna \u2013 skoro istnieje ca\u0142y segment us\u0142ug <i>self-service<\/i> BI, oznacza to, \u017ce takie podej\u015bcie jest mo\u017cliwe. Wielu dostawc\u00f3w \u201enowoczesnych\u201d narz\u0119dzi Business Intelligence rezygnuje z niepotrzebnej i przestarza\u0142ej ich zdaniem architektury opartej na hurtowni danych i skomplikowanym procesie ETL, opieraj\u0105c swoje rozwi\u0105zania bezpo\u015brednio na systemach \u017ar\u00f3d\u0142owych. Jednak w tym miejscu nale\u017cy postawi\u0107 kolejne pytanie: czy takie podej\u015bcie jest w ka\u017cdym przypadku efektywne pod k\u0105tem utrzymaniowym i u\u017cytkowym? Tutaj odpowied\u017a nie jest ju\u017c taka prosta.<\/p>\n\n\n\n<p class=\"has-text-align-left\">Nale\u017cy mie\u0107 na uwadze kilka zasadniczych wad takiego podej\u015bcia. Przede wszystkim raporty oparte na systemie \u017ar\u00f3d\u0142owym musz\u0105 te dane z systemu cyklicznie pobiera\u0107. Bez wzgl\u0119du na to, czy odpytuj\u0105 to \u017ar\u00f3d\u0142o w czasie rzeczywistym, czy buforuj\u0105 dane w swoich wewn\u0119trznych mechanizmach (przetwarzanie w pami\u0119ci operacyjnej, ang. <i>in-memory<\/i>), oznacza to konieczno\u015b\u0107 regularnego odpytywania \u017ar\u00f3d\u0142a. A czym jest to \u017ar\u00f3d\u0142o danych? Jest to najcz\u0119\u015bciej baza transakcyjna, czyli baza, na kt\u00f3rej opiera si\u0119 system ERP, CRM lub inny system&nbsp;\u2013 zazwyczaj krytyczny&nbsp;w dzia\u0142aniu firmy. Bazy transakcyjne bardzo cz\u0119sto i tak s\u0105 mocno obci\u0105\u017cone, wi\u0119c je\u015bli nie poradz\u0105 sobie z dodatkowym obci\u0105\u017ceniem zapytaniami raportowymi, mo\u017ce to by\u0107 bardzo niebezpieczne dla funkcjonowania ca\u0142ego przedsi\u0119biorstwa. Rozwi\u0105zaniem w takim wypadku jest tzw. \u0142adowanie przyrostowe, dzi\u0119ki kt\u00f3remu dane nie b\u0119d\u0105 pobierane za ka\u017cdym razem w 100%, a dodawane b\u0119d\u0105 jedynie te dane, kt\u00f3re pojawi\u0142y si\u0119, b\u0105d\u017a zmieni\u0142y od ostatniego \u0142adowania. Jednak takie rozwi\u0105zanie wymaga przygotowania odpowiedniego modelu \u0142adowania danych, a wi\u0119c w istocie&nbsp;\u2013 procesu ETL.<\/p>\n\n\n\n<p class=\"has-text-align-left\">I tutaj dochodzimy do sedna. Tworz\u0105c wewn\u0119trzne struktury danych dla narz\u0119dzia self-service BI, cz\u0119sto nazywane modelem danych, tworzymy tak naprawd\u0119 hurtowni\u0119 danych. <strong>Wszelkie modele, kt\u00f3rych rol\u0105 jest zast\u0105pienie hurtowni danych, w rzeczywisto\u015bci s\u0105 hurtowniami danych.<\/strong> Zmieniono jedynie ich nazw\u0119 i wprowadzono nowe, chwytliwe has\u0142a. Najwi\u0119kszym problemem w takim podej\u015bciu nie jest jednak samo zmienione nazewnictwo, a warstwa utrzymaniowa raport\u00f3w zbudowanych w taki spos\u00f3b. Najcz\u0119\u015bciej tworzony jest bowiem osobny model dla poszczeg\u00f3lnych jednostek raportowych \u2013 mo\u017cna wi\u0119c sobie wyobrazi\u0107 sytuacj\u0119, w kt\u00f3rej istniej\u0105 dziesi\u0105tki raport\u00f3w i ka\u017cdy z nich osobno pobiera dane ze \u017ar\u00f3d\u0142a, na podstawie osobno dla niego stworzonego modelu danych. Z\u0142amana w ten spos\u00f3b zostaje kluczowa zasada integralno\u015bci danych i jednej wersji prawdy.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"konsekwencje-self-service\">Konsekwencje self-service<\/h2>\n\n\n\n<p class=\"has-text-align-left\">Przedsi\u0119biorstwo, kt\u00f3re pocz\u0105tkowo chcia\u0142o ograniczy\u0107 koszty poprzez rezygnacj\u0119 z hurtowni danych, wpa\u015b\u0107 mo\u017ce wi\u0119c w spiral\u0119 b\u0142\u0119du, z kt\u00f3rej nie\u0142atwo wyj\u015b\u0107. Wyobra\u017amy sobie, co si\u0119 stanie, je\u017celi co\u015b zostanie zmienione w \u017ar\u00f3d\u0142owej bazie danych, chocia\u017cby co\u015b tak prostego jak nazwa kolumny w tabeli. W przypadku dziesi\u0105tek autonomicznych modeli&nbsp;trzeba b\u0119dzie wprowadzi\u0107 zmiany&nbsp;w ka\u017cdym z nich z osobna. W przypadku zunifikowanego procesu ETL, stworzonego dla hurtowni danych, zmiany takie wprowadzane s\u0105 w okre\u015blonych miejscach przep\u0142ywu&nbsp;\u2013 tylko raz. Ponadto pojedyncze modele w raportach mog\u0105 mie\u0107 swoj\u0105 w\u0142asn\u0105 logik\u0119 dzia\u0142ania (i innego autora), wi\u0119c w momencie, gdy trzeba wprowadzi\u0107 modyfikacj\u0119, w skrajnych przypadkach mo\u017ce to powodowa\u0107 konieczno\u015b\u0107 zrozumienia ogromnej ilo\u015bci linii kodu obs\u0142uguj\u0105cego poszczeg\u00f3lne raporty.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"bezpieczenstwo\">Bezpiecze\u0144stwo<\/h2>\n\n\n\n<p class=\"has-text-align-left\">Istotnym aspektem w przypadku wszelkich system\u00f3w opartych o dane jest bezpiecze\u0144stwo. W tej kwestii narz\u0119dzia <em>self-service<\/em> r\u00f3wnie\u017c mog\u0105 by\u0107 ryzykowne. W przypadku centralnego miejsca przetwarzania danych, a wi\u0119c hurtowni danych, \u0142atwiej jest zarz\u0105dza\u0107 ich bezpiecze\u0144stwem. Nowoczesne systemy bazodanowe, na kt\u00f3rych mo\u017cemy postawi\u0107 hurtownie danych, takie jak np. SQL Server, maj\u0105 wbudowane mechanizmy zabezpiecze\u0144 obiekt\u00f3w i rekord\u00f3w, dlatego te\u017c w sp\u00f3jny spos\u00f3b mo\u017cna na przyk\u0142ad nadawa\u0107 i odbiera\u0107 dost\u0119py u\u017cytkownikom. Natomiast w przypadku rozwi\u0105za\u0144 opartych bezpo\u015brednio na \u017ar\u00f3dle danych, wykorzystywa\u0107 trzeba zabezpieczenia konkretnych jednostek raportowych, co mo\u017ce skutkowa\u0107 podobnymi problemami, jak wspomniane wcze\u015bniej zarz\u0105dzanie zmianami w \u017ar\u00f3dle i logice.<\/p>\n\n\n\n<p class=\"has-text-align-left\">Zobaczmy typow\u0105 architektur\u0119 rozwi\u0105zania samoobs\u0142ugowego BI bez hurtowni danych. Wydaje si\u0119 du\u017co prostsza, prawda? Jest to jednak z\u0142udne wra\u017cenie, poniewa\u017c wszystko \u201edzieje si\u0119\u201d wewn\u0105trz ka\u017cdej z aplikacji (raportu, analizy). Ka\u017cda aplikacja ma swoje w\u0142asne po\u0142\u0105czenia i regu\u0142y pobierania danych.<\/p>\n\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/BI-self-service.jpg\" alt=\"BI-self-service\" class=\"wp-image-11426\" title=\"\"><\/figure>\n<\/div>\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-text-align-left\"><\/p>\n\n\n\n<p class=\"has-text-align-left\">Schemat systemu Business Intelligence typu <em>self-service<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Podsumowanie\">Podsumowanie<\/h2>\n\n\n\n<p class=\"has-text-align-left\">Zar\u00f3wno systemy wykorzystuj\u0105ce hurtownie danych, jak i narz\u0119dzia&nbsp;<em>self-service<\/em>, znajduj\u0105 zastosowanie w biznesie. Implementacje w obu przypadkach mog\u0105 by\u0107 zako\u0144czone zar\u00f3wno sukcesem, jak i pora\u017ck\u0105 \u2013 wszystko zale\u017cy od rodzaju biznesu, jego potrzeb, wykorzystanych narz\u0119dzi i umiej\u0119tno\u015bci architekta systemu. Moim zdaniem warto jednak pami\u0119ta\u0107 o tym, \u017ce sytuacje, w kt\u00f3rych mo\u017cna \u201eomin\u0105\u0107\u201d hurtowni\u0119 danych s\u0105 stosunkowo rzadkie, a narz\u0119dzia, kt\u00f3re nie korzystaj\u0105 z tradycyjnej hurtowni danych, tak naprawd\u0119 buduj\u0105 jej model wewn\u0105trz swoich w\u0142asnych struktur, pomijaj\u0105c przy tym ca\u0142y szereg udogodnie\u0144 i dobrych praktyk zwi\u0105zanych z hurtowni\u0105. Do ka\u017cdej implementacji nale\u017cy wi\u0119c podej\u015b\u0107 rozs\u0105dnie, bez ulegania marketingowym sloganom przedstawicieli handlowych. Nale\u017cy r\u00f3wnie\u017c dostrzega\u0107 d\u0142ugofalowe zalety oraz wady, koszty i korzy\u015bci implementacji ka\u017cdego narz\u0119dzia \u2013 to, co na pocz\u0105tku mo\u017ce wydawa\u0107 si\u0119 ta\u0144szym rozwi\u0105zaniem, mo\u017ce okaza\u0107 si\u0119 g\u0142\u00f3wnym generatorem kosztu, zmniejszaj\u0105cym nasz zwrot z inwestycji.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wielu dostawc\u00f3w oprogramowania s\u0142u\u017c\u0105cego do sk\u0142adowania, analizy oraz wizualizacji danych, chwali si\u0119, \u017ce dostarcza zunifikowan\u0105 platform\u0119 klasy Business Intelligence, kt\u00f3rej implementacja nie wymaga posiadania centralnej hurtowni danych. Czy w rzeczywisto\u015bci jest to mo\u017cliwe? Je\u015bli tak, to jakie to niesie ze sob\u0105 konsekwencje w kr\u00f3tkiej oraz d\u0142ugiej perspektywie czasu? Postaram si\u0119 przeanalizowa\u0107 ryzyko takiego rozwi\u0105zania oraz zweryfikowa\u0107 szereg mit\u00f3w zwi\u0105zanych z systemami self-service BI.<\/p>\n","protected":false},"author":28,"featured_media":31658,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"iawp_total_views":20,"footnotes":""},"categories":[1,582],"tags":[51],"offering":[521],"class_list":["post-31650","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artykuly","category-technologie","tag-business-intelligence","offering-modern-data-solutions"],"acf":[],"_links":{"self":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/31650","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/users\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/comments?post=31650"}],"version-history":[{"count":2,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/31650\/revisions"}],"predecessor-version":[{"id":32930,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/31650\/revisions\/32930"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/media\/31658"}],"wp:attachment":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/media?parent=31650"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/categories?post=31650"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/tags?post=31650"},{"taxonomy":"offering","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/offering?post=31650"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}