Repozytorium DAX i dokumentacja miar: jak zatrzymać dublowanie logiki w zespole

Jak zbudować repozytorium DAX i dokumentację miar, by ograniczyć dublowanie logiki w Power BI? Praktyczne standardy nazewnictwa, katalogowania, review, wersjonowania w Git i lekkich testów regresji.
31 lipca 2026
blog

Dlaczego w zespołach Power BI tak łatwo powstają zdublowane miary DAX?

Zdublowane miary DAX powstają łatwo przede wszystkim dlatego, że logika biznesowa w Power BI jest zapisywana lokalnie w modelu, a nie zawsze w jednym, wspólnym i łatwo przeszukiwalnym miejscu. Gdy kilka osób pracuje nad raportami równolegle, bardzo często każda z nich tworzy własną wersję tej samej kalkulacji, bo szybciej jest napisać nową miarę niż upewnić się, czy identyczna lub bardzo podobna już istnieje. Problem nie wynika zwykle z błędu technicznego, tylko z braku widoczności i wspólnego kontekstu.

Dodatkowo DAX pozwala zapisać tę samą logikę na wiele sposobów. Dwie miary mogą dawać ten sam wynik, ale różnić się nazwą, strukturą kodu, użytymi funkcjami albo zakresem filtrów. To utrudnia rozpoznanie, że w modelu istnieje już odpowiednik. W praktyce jedna osoba zapisze kalkulację jako Total Sales, inna jako Sales Amount, a jeszcze inna doda drobną modyfikację kontekstu i uzna miarę za nową, mimo że biznesowo opisuje to samo.

Duże znaczenie ma też presja czasu. W projektach raportowych priorytetem bywa dostarczenie wyniku, a nie porządkowanie warstwy semantycznej. Jeśli zespół nie ma ustalonych zasad nazewnictwa, opisu przeznaczenia miar i procesu weryfikacji przed dodaniem nowej kalkulacji, naturalnym skutkiem jest mnożenie podobnych definicji. Każda kolejna kopia zwiększa ryzyko niespójności, bo później różne raporty mogą używać różnych wersji tej samej logiki.

Do dublowania prowadzi także to, że granica między „nową miarą” a „wariantem istniejącej” bywa nieostra. Czasem zmiana jest rzeczywiście uzasadniona, na przykład dotyczy innego okresu, innej definicji KPI albo innego zachowania wobec filtrów. Często jednak różnice są przypadkowe i wynikają z tego, że autor nie znał wcześniejszego rozwiązania albo nie miał pewności, czy może je bezpiecznie wykorzystać.

W skrócie: dublowanie miar DAX jest częste, bo łączy się tu kilka czynników naraz — rozproszona wiedza zespołowa, brak centralnej dokumentacji, wielość równoważnych zapisów tej samej logiki oraz szybki, iteracyjny sposób budowy raportów. Gdy te warunki występują jednocześnie, powielanie kalkulacji staje się w Power BI bardzo łatwe.

💡 Zanim dodasz nową miarę, poświęć 2 minuty na wyszukanie podobnych nazw, opisów i wyników w modelu — to często wystarcza, by uniknąć kolejnej kopii tej samej logiki. Jeśli miara jest tylko wariantem istniejącej, buduj ją jako pochodną lub jasno opisz różnicę biznesową.

Jakie minimum standardów nazewnictwa i opisu miar daje największy efekt?

Największy efekt daje nie „rozbudowana metodologia”, tylko krótkie, obowiązkowe minimum, które każdy w zespole stosuje tak samo. W praktyce wystarczą dwa elementy: spójna nazwa miary i krótki opis jej logiki biznesowej. To właśnie one najszybciej ograniczają tworzenie duplikatów, błędne użycie istniejących miar i czas potrzebny na zrozumienie modelu.

W nazewnictwie miar minimum powinno odpowiadać na trzy pytania: co miara liczy, w jakim wariancie i ewentualnie w jakiej jednostce. Nazwa powinna być jednoznaczna i czytelna bez otwierania formuły DAX. Dobrze działa stały schemat, np. nazwa biznesowa plus doprecyzowanie w nawiasie lub po separatorze, jeśli chodzi o wariant typu netto/brutto, YTD, narastająco, średnia, liczba unikalna. Najważniejsze jest unikanie nazw ogólnych i niejednoznacznych, takich jak Sprzedaż 2, Wynik final czy Marża nowa, bo nie komunikują różnicy względem innych miar.

Opis miary powinien być krótki, ale użyteczny. Wystarczy, że zawiera definicję biznesową, główne założenie filtrowania lub agregacji oraz informację o wyjątkach, jeśli wpływają na interpretację wyniku. Taki opis nie powinien przepisywać całego DAX-a, tylko tłumaczyć sens miary. Jeśli ktoś widzi nazwę i opis, powinien móc ocenić, czy może użyć istniejącej miary, zamiast tworzyć kolejną o podobnym znaczeniu.

Minimalny standard, który zwykle daje najlepszy stosunek efektu do kosztu wdrożenia, można sprowadzić do jednej zasady operacyjnej: każda miara ma mieć unikalną, biznesowo zrozumiałą nazwę oraz opis odpowiadający na pytanie „co dokładnie liczy i czego nie obejmuje”. To wystarcza, aby repozytorium miar było przeszukiwalne, porównywalne i zrozumiałe także dla osób, które nie są autorami pierwotnej logiki.

Jeśli zespół chce dodać jeszcze jeden element minimum, najbardziej opłaca się konsekwentne oznaczanie miar technicznych lub pomocniczych w nazwie, tak aby nie były mylone z miarami do użycia biznesowego. To drobna reguła, ale znacząco zmniejsza ryzyko użycia niewłaściwego obliczenia w raporcie.

Jak zorganizować katalog miar, żeby dało się je szybko znaleźć i ponownie użyć?

Katalog miar powinien być uporządkowany przede wszystkim według obszaru biznesowego i celu użycia, a nie wyłącznie według autora, projektu czy daty powstania. W praktyce oznacza to podział na spójne grupy, takie jak sprzedaż, marża, koszty, zapasy czy finanse, a wewnątrz nich na typ miary: bazowe, pochodne, wskaźniki, miary czasowe. Taki układ skraca czas wyszukiwania i ułatwia ocenę, czy potrzebna logika już istnieje.

Każda miara powinna mieć zestaw minimalnych metadanych: nazwa techniczna, nazwa biznesowa, opis definicji, źródłowe tabele lub kolumny, kontekst użycia oraz tagi. Tagi są kluczowe, bo pozwalają znaleźć miary według różnych kryteriów jednocześnie, na przykład: KPI, YTD, waluta, klient, produkt, raport zarządczy. Bez tagów katalog szybko staje się tylko długą listą nazw.

Bardzo ważne jest też stosowanie jednolitego nazewnictwa. Nazwa powinna od razu mówić, co miara liczy i w jakim wariancie. Dobrze działa stały schemat, na przykład rozróżnienie miar bazowych od prezentacyjnych albo dodawanie oznaczeń dla wersji czasowych i procentowych. Największym problemem katalogów nie jest brak miar, tylko to, że kilka podobnych nazw ukrywa różne definicje.

  • Grupuj miary tematycznie — według domeny biznesowej i typu obliczenia.
  • Wymuś standard opisu — każda miara powinna mieć krótki, jednoznaczny opis i słowa kluczowe.
  • Stosuj spójne nazwy — ten sam wzorzec dla całego zespołu, bez lokalnych wyjątków.
  • Oznacz status użycia — np. aktywna, do wycofania, eksperymentalna, aby nie promować ponownego użycia niepewnej logiki.

Żeby katalog był naprawdę użyteczny, musi umożliwiać dwa sposoby szukania: przez strukturę i przez wyszukiwanie tekstowe. Struktura daje porządek, a wyszukiwarka po nazwie, tagach i opisie pozwala szybko odnaleźć miarę nawet wtedy, gdy użytkownik nie zna dokładnej kategorii. Dopiero połączenie tych dwóch mechanizmów sprawia, że zespół realnie korzysta z istniejących definicji zamiast tworzyć nowe wersje tej samej logiki.

Na końcu warto pilnować zasady, że katalog nie jest archiwum wszystkiego, tylko kontrolowanym zbiorem miar wielokrotnego użytku. Jeśli trafiają do niego przypadkowe, jednorazowe lub niesprawdzone definicje, wyszukiwanie przestaje być wiarygodne. Dobry katalog ma mniej pozycji, ale każda z nich jest opisana, zrozumiała i nadaje się do ponownego użycia bez dodatkowego zgadywania.

💡 Najlepiej działa katalog, w którym miary da się znaleźć zarówno po strukturze biznesowej, jak i po tagach oraz opisie — sama lista nazw bardzo szybko staje się nieczytelna. Wprowadź obowiązkowe minimum metadanych dla każdej miary, bo bez tego zespół zacznie tworzyć nowe definicje zamiast ufać istniejącym.

Jakie narzędzia najlepiej wspierają wersjonowanie modelu i DAX w Git?

Najlepiej sprawdzają się narzędzia, które potrafią zapisać model semantyczny i miary DAX do postaci tekstowej, bo dopiero wtedy Git może sensownie śledzić zmiany, porównywać wersje i obsługiwać code review. W praktyce kluczowe są rozwiązania oparte o format TMDL lub narzędzia eksportujące model do uporządkowanych plików tekstowych, gdzie tabele, miary, relacje i metadane są rozdzielone na czytelne elementy repozytorium.

W pracy z modelami Power BI i Analysis Services najczęściej wykorzystuje się Tabular Editor, ponieważ umożliwia edycję modelu, zapis zmian w formie przyjaznej dla Git oraz łatwiejsze porównywanie obiektów niż w plikach binarnych. Uzupełniająco stosuje się ALM Toolkit do porównywania i wdrażania różnic między modelami, chociaż samo narzędzie nie zastępuje repozytorium Git, tylko wspiera analizę zmian i deployment. Jeśli zespół pracuje bezpośrednio na projekcie wspierającym zapis modelu w plikach tekstowych, bardzo ważne są też standardowe mechanizmy Git, takie jak pull requesty, diff i polityki przeglądu kodu.

Najgorszym wyborem do wersjonowania jest traktowanie całego pliku .pbix jako podstawowego artefaktu w Git, ponieważ to format binarny i utrudnia analizę zmian w DAX oraz modelu. Dlatego praktycznie najlepsze podejście to takie, w którym logika modelu jest wyprowadzona do tekstu, a Git przechowuje właśnie ten zapis. Wtedy zespół widzi, kto zmienił miarę, kolumnę obliczaną, formatowanie lub relację, i może ocenić wpływ zmiany jeszcze przed wdrożeniem.

Jeśli celem jest porządek, audyt zmian i ograniczenie dublowania logiki, najlepszy zestaw to Git + tekstowy zapis modelu, najlepiej w TMDL, oraz narzędzie do edycji i porównywania modeli tabularnych. Taki układ daje wersjonowanie na poziomie rzeczywistych elementów modelu, a nie tylko kolejnych kopii plików raportu.

Jak wdrożyć code review dla miar DAX, żeby wyłapywać duplikaty i błędy logiczne?

Skuteczne code review dla miar DAX trzeba oprzeć nie na samym „czy wynik się zgadza”, ale na porównaniu intencji biznesowej, definicji miary i sposobu użycia kontekstu filtrowania. To właśnie wtedy najłatwiej wykryć zarówno duplikaty, jak i błędy logiczne. W praktyce każda nowa lub zmieniana miara powinna trafiać do przeglądu razem z krótkim opisem: co liczy, dla jakiego ziarna raportu, jakie filtry ignoruje lub zachowuje oraz czym różni się od istniejących miar o podobnej nazwie lub wyniku.

Najważniejsze jest wprowadzenie stałego zestawu pytań kontrolnych. Recenzent powinien sprawdzić, czy podobna miara już istnieje pod inną nazwą, czy logika nie została skopiowana z drobną zmianą, czy nazwa odpowiada rzeczywistemu działaniu oraz czy wynik pozostaje poprawny po zmianie kontekstu, na przykład po dodaniu segmentatora, przejściu z poziomu dnia na miesiąc albo po zastosowaniu filtra na wybrany wymiar. W DAX wiele błędów nie wynika ze składni, tylko z niejawnego działania kontekstu, użycia CALCULATE, nieprawidłowego usuwania filtrów przez ALL lub mieszania kolumn i miar w sposób, który daje poprawny wynik tylko w jednym widoku.

Aby wyłapywać duplikaty, review powinno obejmować porównanie nowej miary z repozytorium istniejących definicji. Nie chodzi tylko o identyczny kod, ale o tę samą logikę ukrytą pod inną konstrukcją, na przykład dwie miary liczące sprzedaż netto, z których jedna odejmuje zwroty wprost, a druga filtruje typ dokumentu. Jeśli obie odpowiadają na to samo pytanie biznesowe, powinny zostać scalone albo jedna powinna jawnie odwoływać się do drugiej. Dobrą praktyką jest też wymaganie, by autor wskazał, czy nowa miara jest bazowa, czy pochodna. To ogranicza tworzenie kolejnych wariantów tej samej kalkulacji.

W przypadku błędów logicznych najlepiej działa review oparte na prostych scenariuszach testowych. Recenzent nie powinien czytać kodu w oderwaniu od danych, tylko sprawdzić wynik dla kilku przewidywalnych przypadków: bez filtrów, dla pojedynczej kategorii, dla sumy wielu kategorii oraz dla pustego kontekstu lub brakujących danych. Dzięki temu szybko widać typowe problemy: błędne sumowanie wartości nieaddytywnych, różnice między sumą wierszy a totalem, niewłaściwe użycie iteracji, albo wynik zależny od kolejności filtrów.

Żeby taki proces był powtarzalny, warto przyjąć prosty standard akceptacji. Miara przechodzi review dopiero wtedy, gdy ma jednoznaczną nazwę, opis biznesowy, wskazanie zależności od innych miar i potwierdzone zachowanie w podstawowych kontekstach filtrowania. Bez tego recenzja zamienia się w ocenę stylu pisania kodu, a nie jakości logiki. W DAX to właśnie kontrola znaczenia miary i jej zachowania w różnych kontekstach jest najskuteczniejszym sposobem na zatrzymanie dublowania logiki i trudnych do wykrycia błędów obliczeń.

💡 W code review dla DAX pytaj najpierw „czy ta logika już istnieje?” i „jak miara zachowuje się po zmianie kontekstu?”, bo to właśnie tam najczęściej kryją się duplikaty i błędy. Dobrą praktyką jest dołączanie do każdej nowej miary krótkiego opisu biznesowego oraz 2–3 scenariuszy testowych do sprawdzenia przez recenzenta.

Jak dokumentować zależności miar, żeby zmiany nie psuły raportów po cichu?

Najważniejsze jest dokumentowanie miary nie tylko jako pojedynczej formuły, ale jako elementu zależnego od innych miar, tabel, kolumn i założeń biznesowych. Sama definicja DAX nie wystarcza, bo zmiana w jednej miarze bazowej może zmienić wynik wielu wskaźników pośrednich i końcowych bez żadnego technicznego błędu. Dlatego dokumentacja powinna jasno pokazywać, z czego dana miara korzysta i co od niej zależy.

W praktyce każda istotna miara powinna mieć krótki opis zawierający cel biznesowy, źródło logiki, użyte miary podrzędne oraz zakres wpływu. Jeśli miara Marża % korzysta z Przychód i Koszt, to dokumentacja powinna to wskazywać wprost. Jeśli z kolei Przychód jest używany przez kilka raportów zarządczych i KPI, to taka informacja też powinna być zapisana. Dzięki temu przy zmianie definicji wiadomo, że nie modyfikuje się lokalnego obliczenia, tylko element wspólny dla wielu miejsc.

Dobrą praktyką jest utrzymywanie zależności w dwóch warstwach: technicznej i biznesowej. Warstwa techniczna opisuje, jakie miary i obiekty modelu są wykorzystywane w formule. Warstwa biznesowa wyjaśnia, co oznacza wynik, jakie są reguły filtrowania, jakie wyjątki zastosowano i kiedy zmiana definicji będzie zmianą semantyczną, a nie tylko refaktoryzacją kodu. To rozróżnienie jest kluczowe, bo raport może działać poprawnie technicznie, a jednocześnie prezentować inne znaczenie wskaźnika niż wcześniej.

Żeby uniknąć „cichych” uszkodzeń, dokumentacja zależności powinna być powiązana z procesem zmian. Przy każdej modyfikacji miary trzeba zapisać, czy zmiana dotyczy tylko uproszczenia kodu, czy zmienia wynik. Jeśli zmienia wynik, należy wskazać miary zależne i raporty potencjalnie dotknięte zmianą. Bez tego zespół widzi nową wersję formuły, ale nie ma informacji, które elementy wymagają ponownej weryfikacji.

Najbardziej użyteczny zapis to taki, który pozwala odpowiedzieć na trzy pytania: od czego ta miara zależy, co zależy od niej oraz jaki będzie skutek zmiany definicji. Jeżeli dokumentacja nie daje tych odpowiedzi, to nie chroni przed regresją, tylko archiwizuje kod. Celem nie jest więc opisanie wszystkiego, lecz zapisanie tych relacji, które pozwalają ocenić ryzyko zmiany zanim trafi ona do raportu.

Warto też utrzymywać stałą konwencję opisu, na przykład przez ten sam układ pól w repozytorium lub przy każdej miarze: definicja biznesowa, zależności wejściowe, obiekty zależne, właściciel logiki i data ostatniej zmiany znaczeniowej. Taka standaryzacja skraca analizę wpływu i pozwala szybciej wychwycić, że zmiana w jednej miarze bazowej może przeliczyć wiele wyników bez ostrzeżenia ze strony narzędzia.

Jak zrobić lekkie testy regresji miar, żeby zespół ufał refaktoryzacji?

Lekkie testy regresji miar powinny sprawdzać nie „czy raport wygląda podobnie”, ale czy miara zwraca te same wyniki w zdefiniowanych kontekstach filtrowania przed i po zmianie. Celem nie jest pełne testowanie całego modelu, tylko szybkie wychwycenie sytuacji, w których refaktoryzacja zmienia logikę biznesową albo psuje zachowanie na typowych przekrojach danych.

Najpraktyczniejsze podejście to zbudowanie małego zestawu przypadków testowych dla najważniejszych miar. Każdy przypadek powinien określać: nazwę miary, zestaw filtrów, oczekiwany wynik albo wynik referencyjny oraz dopuszczalną tolerancję dla zaokrągleń. Testy warto oprzeć na kilku reprezentatywnych scenariuszach: brak filtrów, typowy filtr biznesowy, skrajny przypadek oraz kontekst, w którym wcześniej zdarzały się błędy.

  • Wybierz tylko miary krytyczne — np. przychód, marża, liczba klientów, miary używane w KPI i raportach zarządczych.
  • Zdefiniuj 5–10 stałych kontekstów testowych — np. konkretny miesiąc, segment, kraj, pusty wybór, wiele wartości naraz.
  • Porównuj wynik przed i po zmianie — najlepiej automatycznie, a jeśli to niemożliwe, to przynajmniej według jednej tabeli kontrolnej.
  • Oddziel testy „ma być identycznie” od testów „ma się zmienić” — jeśli refaktoryzacja celowo poprawia błąd, oczekiwany wynik trzeba zaktualizować świadomie, a nie uznać różnicę za awarię.

Żeby zespół ufał takim testom, muszą być małe, powtarzalne i czytelne. Zbyt szeroki zestaw szybko przestaje być utrzymywany. Lepiej mieć 20 wiarygodnych testów dla kluczowych miar niż 200 przypadków, których nikt nie uruchamia przed wdrożeniem. Dobrą praktyką jest przechowywanie testów obok definicji miar lub w tym samym repozytorium, tak aby zmiana logiki i zmiana testu były widoczne w jednym przeglądzie zmian.

Warto też rozróżnić dwa typy regresji: regresję wartości, gdy liczba się zmienia, oraz regresję semantyki, gdy miara działa inaczej tylko w określonym kontekście, np. przy sumach, subtotalach, braku wyboru albo relacjach między tabelami. Dlatego same testy „dla jednego filtra” nie wystarczą. Jeśli miara używa warunków zależnych od kontekstu, trzeba przetestować także wiersz szczegółowy i agregację.

Minimalny próg użyteczności jest prosty: po każdej refaktoryzacji zespół powinien móc odpowiedzieć, że dla ustalonego zestawu miar i scenariuszy wyniki są zgodne z wersją referencyjną, a każda różnica jest opisana i zamierzona. Wtedy test regresji przestaje być formalnością i staje się podstawą zaufania do zmian w DAX.

Majczęściej zadawane pytania i odpowiedzi odnośnie Repozytorium DAX i dokumentacja miar: jak zatrzymać dublowanie logiki w zespole

Od czego zacząć budowę repozytorium miar DAX w małym zespole?

Najlepiej zacząć od prostego, wspólnego katalogu najważniejszych miar i minimalnych zasad opisu. Na początku nie trzeba opisywać całego modelu. Wystarczy zebrać miary najczęściej używane, nadać im spójne nazwy, dodać krótki opis biznesowy oraz oznaczyć obszar, status i podstawowe zależności. Taki start szybko ogranicza tworzenie kolejnych kopii logiki.

Jak odróżnić nową miarę od wariantu istniejącej miary DAX?

Nowa miara jest uzasadniona wtedy, gdy odpowiada na inne pytanie biznesowe lub ma świadomie inną logikę filtrowania. Jeśli zmienia się tylko sposób zapisu DAX albo drobny szczegół techniczny, zwykle lepiej rozwinąć istniejącą miarę lub zbudować wersję pochodną. Kluczowe jest opisanie, co dokładnie różni znaczenie biznesowe obu definicji.

Jakie metadane przy mierze DAX są najbardziej przydatne w codziennej pracy?

Najbardziej przydatne są metadane, które pomagają szybko ocenić znaczenie, źródło i możliwość ponownego użycia miary. W praktyce najlepiej sprawdza się krótki zestaw pól:

  • nazwa techniczna i biznesowa,
  • opis definicji,
  • źródłowe tabele lub kolumny,
  • kontekst użycia,
  • tagi i status miary.

Taki zestaw ułatwia wyszukiwanie i zmniejsza ryzyko tworzenia duplikatów.

Czy samo nazewnictwo miar wystarczy, żeby zatrzymać dublowanie logiki w Power BI?

Nie, samo nazewnictwo nie wystarczy, choć daje szybki efekt porządkowy. Spójne nazwy pomagają rozpoznać podobne kalkulacje, ale bez opisu biznesowego, tagów i przeszukiwalnego katalogu zespół nadal może tworzyć nowe wersje tej samej logiki. Najlepiej działa połączenie nazwy, opisu, statusu użycia i prostego procesu weryfikacji przed dodaniem miary.

Jakie pytania powinny paść w review nowej miary DAX przed jej akceptacją?

Najważniejsze pytania dotyczą tego, czy logika już istnieje i jak miara zachowuje się w różnych kontekstach filtrowania. W praktyce dobrze sprawdza się krótka lista kontrolna:

  • czy podobna miara już jest w repozytorium,
  • czy nazwa odpowiada definicji biznesowej,
  • jak miara działa po zmianie filtrów,
  • czy jest bazowa czy pochodna,
  • jakie raporty mogą zależeć od tej logiki.
Dlaczego wersjonowanie pliku PBIX w Git nie rozwiązuje problemu z miarami DAX?

Plik PBIX nie rozwiązuje tego problemu, bo jako format binarny utrudnia analizę zmian w modelu i DAX. Zespół nie widzi wtedy wygodnie, która miara została zmieniona, jak wygląda różnica i czy modyfikacja wpływa na wspólną logikę. Dlatego praktyczniejsze jest wersjonowanie tekstowego zapisu modelu, który Git może porównywać i recenzować.

Jak sprawdzić wpływ zmiany jednej miary DAX na inne raporty i wskaźniki?

Najlepiej sprawdzać wpływ zmiany przez udokumentowane zależności techniczne i biznesowe danej miary. Sama formuła nie pokazuje pełnego ryzyka. Trzeba wiedzieć, z jakich miar i obiektów korzysta dana definicja oraz które wskaźniki i raporty używają jej dalej. Dzięki temu łatwiej odróżnić refaktoryzację kodu od zmiany znaczenia wyniku.

Jakie lekkie testy regresji miar DAX da się wdrożyć bez dużego narzutu pracy?

Najlepiej wdrożyć mały zestaw testów dla kluczowych miar w kilku stałych kontekstach filtrowania. Nie trzeba testować wszystkiego. Wystarczy porównywać wyniki przed i po zmianie dla najważniejszych KPI, scenariusza bez filtrów, typowego przekroju biznesowego oraz jednego przypadku skrajnego. Taki zestaw szybko wychwytuje niezamierzone zmiany po refaktoryzacji.

icon

Formularz kontaktowyContact form

Imię *Name
NazwiskoSurname
Adres e-mail *E-mail address
Telefon *Phone number
UwagiComments