Przejdź do głównej zawartości

Zapytania zaawansowane

Edalitics szczególną uwagę przykłada do łatwości obsługi i abstrakcji wiedzy technicznej wymaganej do wykonywania zapytań w bazie danych. Czasami jednak konieczne jest skorzystanie z mocy SQL, aby wykonać bardziej złożone zapytania. W tym celu edalitics udostępnia zaawansowanym użytkownikom „Tryb SQL”. Aby uzyskać dostęp do tego trybu, należy aktywować przełącznik znajdujący się w prawym górnym rogu okna definicji zapytania w konfiguracji panelu (1)

Aktywując ten przełącznik, można przejść z „Trybu EDA”, domyślnego trybu edalitics, do „Trybu SQL”, w którym zaawansowani użytkownicy będą mogli definiować i wykonywać natywne zapytania SQL bezpośrednio do bazy danych.

Po aktywowaniu przełącznika „Trybu SQL” użytkownik będzie mógł zdefiniować swoje dowolne zapytanie SQL w przeznaczonym do tego polu tekstowym (2) oraz wskazać jedną z głównych tabel modelu danych, na której oparte jest zapytanie (3).

Zapytania: są to dowolne natywne zapytania SQL, przy uwzględnieniu następujących ograniczeń:

  • Zapytania muszą dotyczyć tego samego schematu bazy danych, na którym tworzony jest raport. Nie można łączyć różnych schematów baz danych. Jeśli potrzebne są tabele z różnych schematów, zalecamy utworzenie widoków.
  • Dla tabel należy stosować aliasy. Innymi słowy, zapytania muszą być zdefiniowane według poniższej przykładowej struktury: „select a.field1, a.field2 from table a”.

Aby ułatwić zaawansowaną pracę z zapytaniami SQL, na tym samym ekranie dostępna jest pomoc (3), która przypomina:

  • Ogólne zalecenia
  • Jak powiązać filtry raportu z naszym zapytaniem SQL
  • Przykłady użycia

Po zdefiniowaniu naszego zapytania SQL (2) i wskazaniu tabeli głównej, możemy je już wykonać i używać normalnie, tak jak każde inne zapytanie z dowolnego innego panelu.

Natywne zapytania SQL są dopasowywane przez edalitics, a ewentualne filtry dostępu do danych, które mogą istnieć w modelu, na którym oparty jest raport, są do nich wstrzykiwane.

Jeśli chcesz powiązać zapytanie z filtrami raportu, musisz:

  • W tym celu wystarczy dodać: AND ${alias_table.columna_filtrada} w klauzuli ‘WHERE’ zapytania w miejscu, w którym chcesz wstrzyknąć filtr
  • Jeśli nie dodałeś jeszcze żadnej klauzuli WHERE, dodaj ją do zapytania i wykonaj niezbędne złączenia (join), wraz z filtrem w formacie ${alias_table.column_filtered}
  • Jeśli tabela, po której filtrujemy, nie występuje w zapytaniu, pamiętaj, że musisz dodać niezbędne klauzule JOIN, aby powiązać tabelę filtra z zapytaniem

Oto kilka przykładów:

  • Proste zapytanie:

SELECT c.customername FROM CUSTOMERSc

  • Zapytanie z powiązanymi filtrami raportu:

    • Mamy w raporcie filtr dla pola ‘city’ tabeli CUSTOMERS:
      • Zapytanie bez powiązanych filtrów:

        SELECT c.customername FROM CUSTOMERSc WHERE c.customername IN (‘Julia’, ‘John’)

      • Zapytanie z powiązanymi filtrami:

        SELECT c.customername FROM CUSTOMERSc WHERE c.customername IN (‘Julia’, ‘john’) AND ${c.city}

  • Mamy w raporcie filtr dla pola ‘office_id’ tabeli OFFICES

    • Zapytanie bez powiązanych filtrów:

      SELECT e.employee_name FROM EMPLOYEE e WHERE e.employee_name IN (‘Julia’, ‘John’)

    • Zapytanie z powiązanymi filtrami: SELECT e.employee_name FROM EMPLOYEE e INNER JOIN OFFICES or ON o.office_id = e.office_id WHERE e.employee_name IN (‘Julia’, ‘John’) AND ${o.office_id}