Search

Home

Edytor konwersji bitów do dowolnego formatu tekstowego -  User format

Edytor konwersji bitów do dowolnego formatu tekstowego - User format

Edytor konwersji bitów pozwala na przekonwertowanie strumienia danych magistrali do dowolnego formatu tekstowego wprowadzonego przez użytkownika w edytorze. Zapewnia możliwość tworzenia struktur zagłębionych oraz formatowania danych pochodzących z magistrali.

Edytor dostępny jest w następujących operatorach w systemie GRAVITY:

CONVERT BITS TO FORMAT

INFORMACJE PODSTAWOWE

Tworzenie schematu formatu danych odbywa się poprzez wprowadzenie dowolnego tekstu przez osobę konfiguracyjną. Do tekstu wprowadzone są znaczniki, dzięki którym można wstawiać dane z magistrali oraz tworzyć grupy - pętle. Znaczniki są interpretowane w trakcie przetwarzania danych wejściowych przez operator.

Wyróżnione są dwa rodzaje znaczników:

  • znaczniki grup → pozwalające na wprowadzenie grup w tworzonym formacie danych:
    • #S-nazwa_grupy# → znacznik rozpoczęcia grupy np: #S-G1#
    • #E-nazwa_grupy# → znacznik zakończenia grupy #E-G1#
    • icon
      Grupę można rozumieć jako blok tekstu (wraz z znacznikami bitów), który ma zostać zinterpretowany i powielony w tekście według następującego schematu przetwarzania. Operator w trakcie przetwarzania danych zgrupuje wszystkie dane magistrali po bitach użytych w przetwarzanej grupie odfiltrowanej wartościami grup nadrzędnych. Następnie wymieni tekst pomiędzy znacznikami grupy na przetworzony, tyle razy, ile otrzymał rekordów z grupowania. W trakcie każdej iteracji przetwarzania znaczniki bitów zostaną wymienione na odpowiadające im wartości z przetwarzanej iteracji.
      icon
      Wymagana jest co najmniej jedna grupa w tekście.
  • znaczniki bitów → bity magistrali występujące w ramach jakiejś grupy odseparowane od tekstu separatorem początku i końca. Domyślne separatory to {i }, ale możesz je zmienić na operatorze wywołującym edytor (CONVERT BITS TO FORMAT). Przykład znacznika bitów {name}.
  • icon
    Każde użycie bitu magistrali w teksie wymaga, aby był on użyty w ramach jakiegoś znacznika grupy.

Wynikiem przetwarzania danych z magistrali wejściowej są rekordy zawierające tekst utworzony według zdefiniowanego formatu. Ilość rekordów tekstu zależy od ilości rekordów grupowania danych magistrali po bitach znajdujących się w pierwszej grupie. Oznacza to, że ilość rekordów wejściowych może być różna od ilości rekordów powstałych po przetwarzaniu. Tak więc jeśli chcesz uzyskać tylko jeden rekord na wyjściu pierwsza grupa nie powinna zawierać znaczników bitów lub zawierać bit, który ma tą samą wartość dla wszystkich rekordów wejściowych.

KONFIGURACJA EDYTORA

Okno edytora jest podzielone na dwa obszary Busbar oraz obszar User format definition.

image

Obszar Busbar przedstawia listę bitów magistrali wchodzącej do operatora wywołującego edytor. Możesz przeciągnąć dowolny bit na obszar User format definition (akcja drag and drop) jeśli chcesz go użyć do budowy struktury formatu.

Obszar User format definition jest właściwym obszarem gdzie będziesz budował konwersję do własnego formatu. Na tym obszarze znajdują się przyciski wspomagające budowę:

  • Load file → wczytuje format z pliku.
  • Create group → wstawia znacznik grupy danych. Jeśli zaznaczysz dany tekst w edytorze to obejmie znacznikiem cały zaznaczony teks. Wymagana jest chociażby jedna grupa danych w budowanym formacie.
  • Ungroup → Usuwa znacznik grupy z zaznaczonego tekstu.
  • Insert empty token → wstawia pusty znacznik bitów magistrali.
  • Show specificators → pokazuje podstawowe formatowania bitów. Formaty bitów można przenieść na obszar edytora tekstu. Zostanie wówczas wstawiony znacznik bitu z wybranym formatowaniem. Konieczne jest uzupełnienie ręczne nazwy bitu.
  • Save → zapisuje schemat formatu do komponentu wywołującego edytor.
  • Save to file → zapisuje format do pliku.

PRZYKŁAD TWORZENIA WŁASNEGO FORMATU

Załóżmy, że chcesz utworzyć plik tekstowy z podsumowaniem zamówień. Chcesz mieć w raporcie informacje o ilości zamówień w poszczególnych latach oraz listę wszystkich zamówień bez podziału na lata. Dane zostały wcześniej pobrane i przetworzone w taki sposób, że dysponujemy na magistrali bitami przechowującymi roczne podsumowania oraz listę zamówień.

Zacznij od wstawienia znacznika grupy używając przycisku Create group.

image

Jeśli w pierwszym grupowaniu chcesz użyć jakiś bitów przeciągnij je na obszar edytora. Zostanie wstawiony znacznik bitu {nazwa_bitu}. W tym przypadku nie użyjemy żadnego bitu ponieważ chcemy mieć na wyjściu tylko jeden rekord danych z raportem, a nie mamy w danych pola z wartością wspólną dla wszystkich rekordów.

image
icon
Wynikiem przetwarzania operatora będzie tyle rekordów z wygenerowanym tekstem, ile powstanie po grupowaniu magistrali według bitów w pierwszym grupowaniu.

Teraz utwórzmy grupę reprezentującą podsumowanie roczne. Będzie ona zawierać informacje ile zamówień i na jaką łączną kwotę wpłynęło w poszczególnych latach. W tym celu musimy dodać nową grupę ponieważ chcemy, aby dane były przetworzone w pętli. Następnie wprowadzamy opisy i przeciągamy bity magistrali na edytor wstawiając w ten sposób znaczniki bitów.

image
icon
Operator interpretując grupę G2 odfiltruje dane z magistrali dla znaczników bitów z grupy G1(w naszym projekcie ich nie ma), a następnie zgrupuje po bitach t_order_year, t_report_orders_count oraz t_report_total_in_year
icon
Możesz formatować wartość bitu wstawiając po jego nazwie : i pożądany format np. {t_report_total_in_year:N2}. Dowiedz się więcej o formatowaniu danych.

Aby wstawić listę wszystkich zamówień wstaw nową grupę G3 na poziomie równorzędnym z grupą G2.

image

Zauważ również, że po prawej stronie edytora powstaje schemat ułożenia grup danych.

Wynikiem przetwarzania operatora będzie tekst:

Orders yearly Report:
####################################################################

Year: 2023
Amount of orders: 3
Gross total in year: 21 620,00
Year: 2024
Amount of orders: 1
Gross total in year: 48,00

List of Orders:
####################################################################

Order year: 2023
Order nr: 25
Customer: Company Id 9
Order gross total: 620
--------------------------------------------------------------------
Order year: 2023
Order nr: 20
Customer: Company Id 9
Order gross total: 19500
--------------------------------------------------------------------
Order year: 2023
Order nr: 19
Customer: Company Id 5
Order gross total: 1500
--------------------------------------------------------------------
Order year: 2024
Order nr: 1
Customer: Company Id 6
Order gross total: 48
--------------------------------------------------------------------

Zauważ, że możesz szybko zmodyfikować raport zmieniając pozycję grupy G3 jako grupę podrzędną do G2. Uzyskasz wówczas podział zamówień dla lat.

image

Wygenerowany tekst będzie następujący

Orders yearly Report:
====================================================================

Year: 2023
Amount of orders: 3
Gross total in year: 21 620,00

List of Orders:
--------------------------------------------------------------------
Order year: 2023
Order nr: 25
Customer: Company Id 9
Order gross total: 620

Order year: 2023
Order nr: 20
Customer: Company Id 9
Order gross total: 19500

Order year: 2023
Order nr: 19
Customer: Company Id 5
Order gross total: 1500

####################################################################

Year: 2024
Amount of orders: 1
Gross total in year: 48,00

List of Orders:
--------------------------------------------------------------------
Order year: 2024
Order nr: 1
Customer: Company Id 6
Order gross total: 48

####################################################################

Możliwe jest równie szybkie zmienienie całego formatu np. na format XML

image

Wynik działania

<root>
	<years>
		<year>2023</year>
		<amount>3</amount>
		<total>21 620,00</total>
	</years>
	<years>
		<year>2024</year>
		<amount>1</amount>
		<total>48,00</total>
	</years>
	<orders>
		<year>2023</year>
		<no>25</no>
		<custoner>Company Id 9</custoner>
		<total>620</total>
	</orders>
	<orders>
		<year>2023</year>
		<no>20</no>
		<custoner>Company Id 9</custoner>
		<total>19500</total>
	</orders>
	<orders>
		<year>2023</year>
		<no>19</no>
		<custoner>Company Id 5</custoner>
		<total>1500</total>
	</orders>
	<orders>
		<year>2024</year>
		<no>1</no>
		<custoner>Company Id 6</custoner>
		<total>48</total>
	</orders>
</root>

Magistrala wyjściowa z komponentu, który ma zbudowany format tekstowy jak powyżej będzie miała tylko jeden rekord z jedną kolumną file_data.

Jeśli powyższy przykład przerobimy w taki sposób, że w pierwszej grupie będą dane dotyczące lat, to na magistrali wyjściowej otrzymamy tyle rekordów, ile będzie lat i każdy będzie zawierał pola, które były użyte w pierwszej grupie oraz sformatowany tekst.

image

Dla powyższych danych otrzymamy dwa rekordy z tekstem w polu file_data

Orders report

Year: 2023
Amount of orders: 3
Gross total in year: 21 620,00

List of Orders:
####################################################################

Order year: 2023
Order nr: 25
Customer: Company Id 9
Order gross total: 620
--------------------------------------------------------------------
Order year: 2023
Order nr: 20
Customer: Company Id 9
Order gross total: 19500
--------------------------------------------------------------------
Order year: 2023
Order nr: 19
Customer: Company Id 5
Order gross total: 1500
--------------------------------------------------------------------
Orders report

Year: 2024
Amount of orders: 1
Gross total in year: 48,00

List of Orders:
####################################################################

Order year: 2024
Order nr: 1
Customer: Company Id 6
Order gross total: 48
--------------------------------------------------------------------