Jestem nowy na forum i dopiero zaczynam od Neo4J. Przepraszam za moje zdyszane pytanie i podstawowe informacje, ale myślę, że pomaga to wyjaśnić, co próbuję podrobić.Modelowanie metadanych dotyczących obliczeń matematycznych w Neo4j
Często pracuję przy projektach Business Intelligence i Data Warehouse dla firm. Gdy tworzymy wymagania Business Intelligence, zwykle musimy utworzyć listę danych biznesowych, które nas interesują (takie jak przychody ze sprzedaży, stosunek zysku, całkowite wydatki) i udokumentować, w jaki sposób te dane biznesowe są obliczane z wykorzystaniem atrybutów danych z naszych systemów bazowych. Zazwyczaj dokumentujemy większość tej pracy w programie Excel w postaci arkuszy kalkulacyjnych wymagań dotyczących danych. Tworzymy listę metryk biznesowych, a następnie stos kolumn z opisem, atrybutami danych źródłowych, obliczeniami itp. Próbuję zrobić (jako osobisty projekt strony) opracować aplikację, której możemy użyć do udokumentowania tego typu informacje o metadanych. Przeczytałem kilka książek i artykułów online Neo4j i myślę, że Neo4j dobrze pasuje do tego Przypadku Używania i teraz próbuję udokumentować podstawowy model danych, aby pomóc mi zacząć.
Początkowo wymyśliłem coś dość prosto do przodu, jak pokazano na zdjęciu po lewej stronie poniżej począwszy od punktu, w którym:
Sales Przychody = Unit_Price * Count_Units_Sold
Szybko jednak zdałem sobie sprawę, że samo obliczenie jest dla mnie bardzo ważne i że w późniejszym czasie chciałabym zdobyć więcej informacji na jego temat, takich jak dodanie różnych wersji obliczanie lub dodawanie notatek w celu dalszego ich opisu. Zmodyfikowałem model, aby "samo obliczenie" było oddzielnym węzłem, jak na obrazku po lewej stronie.
Jednak, gdy zaczynam patrzeć na bardziej złożone dane, wciąż nie jestem pewien, jak najlepiej przedstawić szczegóły obliczeń. Jeśli wezmę poniższy przykład, będę go modelował w następujący sposób.
Wynagrodzenie = Salary_Amount + Overtime_Amount - Kwota podatku
Teraz to jasno przedstawia atrybuty danych (3 lub ich), które są używane w obliczeniach, ale nie wiem jak do reprezentowania samych obliczeń. Na przykład. aby zdefiniować, że obliczenia są wykonywane przez dodanie Salary_Amount do Overtime_Amount, a następnie odjęcie Tax_Amount. Kiedy będę miał bardziej złożone obliczenia obejmujące dzielenie i mnożenie, które muszą być wykonane w określonej kolejności, będzie to jeszcze bardziej skomplikowane. Zasadniczo chcę być w stanie wywnioskować z modelu że obliczenia jest następujący:
Pensja = Salary_Amount + Overtime_Amount - kwota podatku
W przeciwieństwie do:
Zarobki = Salary_Amount * Kwota podatku/nadgodziny Kwota
Lub:
Wynagrodzenie = Kwota podatku * Nadgodziny Kwota - Wynagrodzenie Kwota
szukam jakiś sposób do określenia węzeł obliczeniowy czym mogę zastosować kolejność na drodze atrybuty dane są wykorzystywane. Możliwe, że powinienem zapisać kalkulację jako ciąg tekstowy we właściwości obliczeń, ale nie mogę przestać myśleć, że może to spowodować ból w drodze i ograniczyć możliwość uzyskiwania informacji o przydatności z wykresu, gdy atrybuty danych są używane w różnych obliczeniach.
Uwaga: widziałem na forum this question na podobnym temacie, ale nie otrzymałem wielu odpowiedzi, mimo że moje pytanie jest podobne, chociaż podanie dodatkowych informacji może przynieść dodatkowe informacje.
dziękuję, Michael
jestem edycji to pytanie po zapoznaniu odpowiedź autorem @ChristopheWillemsen i @ stdob--.
Po pierwsze dziękuję bardzo obu współtwórcom. Odpowiedzi i materiały referencyjne były naprawdę pomocne i obaj pokryli moje wymagania. Początkowo pochyliłem się nad wykorzystaniem odwrotnej polskiej notacji zgodnie z odpowiedzią @ stdob, ponieważ oferowało ona zgrabny sposób obsługi zgrupowanych operacji (na przykład nawiasów w moich formułach matematycznych). Jednak po próbie modelowania moich danych w obie strony stwierdziłem, że mam dodatkowe wymagania, których nie uwzględniłem w moim pierwszym poście, który ma na celu przechwycenie wyrażeń logicznych, takich jak "Jeśli, gdzie, które masz). Zasadniczo chcę być w stanie przechwytywać reguły transformacji typu ETL, które wykraczają poza czyste wyrażenia matematyczne i myślę, że to rozwiązanie przez @ChristopheWillemsen będzie to wspierać.
Oto jak mam wzorowany moich podstawowych formuł z zastosowaniem tego podejścia:
Jednak mam również bardziej złożonej logiki, który chcę modelu. Są to reguły typu ETL, które zazwyczaj są rejestrowane jako pseudo kod lub w postaci SQL podczas definiowania wymagań biznesowych dla hurtowni danych lub projektu BI. Poniżej znajduje się przykład, w którym definiuję logikę, w jaki sposób ETL może obliczyć Metrykę Nowych Roszczeń dla firmy ubezpieczeniowej.
Jest to jak mam to rozszerzenie wzorowane na rozwiązaniu, które @ChristopheWillemsen dostarczonych w pierwszej odpowiedzi poniżej.
mógłbyś spojrzeć na to i zobaczyć, czy jest to odpowiedni sposób modelować to. Z punktu widzenia wymagań będą Chcę być w stanie:
- Zrekonstruować logikę tak, że mogę przedstawić go z powrotem do użytkowników końcowych
- odpowiedzi na pytania takie jak to, które metryki atrybut jest potrzebne.
- Przeprowadzić what-if-analizy (np jeśli wartość atrybutu zmienia jaki jest wpływ na metryki, które wykorzystują ten atrybut.
Czy to wygląda odpowiedniego podejścia do modelowania tego typu informacji? Wszelkie sugestie lub ulepszenia są mile widziane
Właśnie natknąłem się na ten ciekawy artykuł: https://blog.socratic.org/stepping-into-math-open-sourcing-our-step-by-step-solver-9b5da066ae36#.sn0owu2yb –