Jeśli zapytanie obejmuje wiele źródeł, utwórz relacje w Builder, aby zdefiniować sposób łączenia ich rekordów na podstawie wspólnej wartości, takiej jak identyfikator podmiotu, numer konta lub dział.
Uwaga: W edytorze SQL , użyj klauzuli JOIN , aby zdefiniować relacje między źródłami zapytania.
Przegląd
Załóżmy na przykład, że Twoje zapytanie zawiera tabelę faktów Orders i tabelę wymiarów Customers jako źródła. Na karcie Relationships możesz zdefiniować sposób powiązania zamówień:
| OrderID | CustomerID | OrderDate |
|---|---|---|
| 111222 | 001 | 01/02/2021 |
| 121212 | 010 | 02/01/2021 |
| 212121 | 100 | 01/12/2021 |
do klientów:
| CustomerID | CustomerName | Region |
|---|---|---|
| 001 | AAA Pralnie chemiczne | Północ |
| 010 | Technologia Wayne'a | Wschód |
| 011 | Señor Taqueria | Zachód |
Wskazówka: Aby zidentyfikować kolumnę z unikalnymi wartościami - taką jak CustomerID- w tabeli wymiarów, oznacz ją jako kolumnę Key .
Ponieważ obie tabele zawierają identyfikatory klientów, możesz utworzyć relację opartą na odpowiednich kolumnach CustomerID i wybrać sposób łączenia - lub łączenia- ich rekordów.
Relacja Left join zwraca wszystkie rekordy z pierwszego źródła - po lewej stronie - oraz wszystkie rekordy dopasowane do w drugim źródle.
Wskazówka: Aby uniknąć duplikatów w Left join, upewnij się, że druga kolumna źródłowa - po prawej w relacji - zawiera unikalne wartości, takie jak kolumna klucza tabeli wymiarów.
Na przykład, w relacji między naszymi tabelami Orders i Customers, Left join zwraca wszystkie zamówienia, z dodatkowymi szczegółami dotyczącymi tych z identyfikatorami klientów dopasowanymi w tabeli Customers. Zamówienia z identyfikatorami klientów nie dopasowane w tabeli Klienci zawierają wartości null dla dodatkowych danych klienta.
| OrderID | CustomerID | CustomerName | OrderDate | Region |
|---|---|---|---|---|
| 111222 | 001 | AAA Pralnie chemiczne | 01/02/2021 | Północ |
| 121212 | 010 | Technologia Wayne'a | 02/01/2021 | Wschód |
| 212121 | 100 | -------------------- | 01/12/2021 | ------- |
Relacja Right join zwraca wszystkie rekordy z drugiego źródła - po prawej stronie - oraz wszystkie rekordy dopasowane do w drugim źródle.
Wskazówka: Aby uniknąć duplikatów w prawym sprzężeniu , upewnij się, że pierwsza kolumna źródłowa - po lewej stronie w relacji - zawiera unikalne wartości, takie jak kolumna klucza tabeli wymiarów.
W przypadku naszych tabel Orders i Customers, Right join zwraca wszystkich klientów, z dodatkowymi szczegółami dla tych z identyfikatorami dopasowanymi w tabeli Orders. Klienci z identyfikatorami nie dopasowanymi w tabeli zamówień zawierają wartości null dla dodatkowych danych zamówienia.
| OrderID | CustomerID | CustomerName | OrderDate | Region |
|---|---|---|---|---|
| 111222 | 001 | AAA Pralnie chemiczne | 01/02/2021 | Północ |
| 121212 | 010 | Technologia Wayne'a | 02/01/2021 | Wschód |
| -------- | 011 | Señor Taqueria | ------------- | Zachód |
Relacja Inner join zwraca tylko rekordy, które pojawiają się w obu źródłach.
W naszej relacji między tabelami Orders i Customers, Inner join zwraca tylko zamówienia od klientów z identyfikatorami dopasowanymi w obu źródłach.
| OrderID | CustomerID | CustomerName | OrderDate | Region |
|---|---|---|---|---|
| 111222 | 001 | AAA Pralnie chemiczne | 01/02/2021 | Północ |
| 121212 | 010 | Technologia Wayne'a | 02/01/2021 | Wschód |
Relacja Full join zwraca wszystkie rekordy ze źródła lub.
W przykładzie naszych tabel Zamówienia i Klienci, Pełne sprzężenie zwraca wszystkie zamówienia i klientów. Rekordy z identyfikatorami klientów dopasowanymi tylko w jednym źródle zawierają wartości null dla brakujących danych.
| OrderID | CustomerID | CustomerName | OrderDate | Region |
|---|---|---|---|---|
| 111222 | 001 | AAA Pralnie chemiczne | 01/02/2021 | Północ |
| 121212 | 010 | Technologia Wayne'a | 02/01/2021 | Wschód |
| -------- | 011 | Señor Taqueria | ------------- | Zachód |
| 212121 | 100 | -------------------- | 01/12/2021 | ------- |
Na karcie Relationships definiujesz, w jaki sposób wiele źródeł zapytania jest ze sobą powiązanych. Aby zdefiniować tę relację, dopasowujesz dane współdzielone między źródłami i wybierasz sposób łączenia ich rekordów w wynikach zapytania.
Uwaga: Relacje zapytań są kumulatywne; opierają się na sobie nawzajem. Źródła w jednym sprzężeniu określają kolumny dostępne do połączenia z innymi źródłami.
Krok 1. Określ źródła, do których chcesz dołączyć
Aby zdefiniować relację źródła z innymi źródłami w zapytaniu, przeciągnij je z Źródła do zakładki Relacje.
- Aby zdefiniować pierwszą relację między źródłami zapytania, przeciągnij dwa źródła z Źródła do Dołącz 1.
- Aby zdefiniować relację źródła ze źródłami poprzedniego złączenia, kliknij Dodaj kolejne złączenie i przeciągnij źródło z Źródła do nowego złączenia.
Uwaga: Jeśli zapytanie ma wiele sprzężeń, ułóż je w kolejności, w jakiej powinny wystąpić, ponieważ każde sprzężenie zależy od źródeł poprzedniego sprzężenia. Aby zmienić położenie złącza, wybierz z menu pozycję Przenieś w górę lub Przenieś w dół . Aby usunąć sprzężenie, na przykład jeśli zapytanie nie zawiera już źródła, wybierz z menu Remove .
Krok 2. Określ, w jaki sposób źródła są powiązane
Aby zdefiniować relacje między źródłami, możesz mapować współdzielone wartości na podstawie:
- Kolumny z odpowiednimi danymi
- Pole obliczeniowe, aby dostosować wartości źródła w razie potrzeby do dokładnego dopasowania do innego źródła
Wskazówka: Możesz łączyć tylko kolumny tego samego typu danych. Aby dopasować dane różnych typów, np. jeśli identyfikatory kont są liczbami całkowitymi w jednym źródle i ciągami tekstowymi w drugim, edytuj typ kolumny w panelu Właściwości pola.
W złączeniu wybierz odpowiednie kolumny z każdego źródła i wybierz sposób dopasowywania rekordów na podstawie ich wartości.
| Operator | Opis |
|---|---|
| Równy (=) | Dopasowuje rekordy z identycznymi wartościami w obu źródłach |
| Nie równa się (!=) | Dopasowuje rekordy z różnymi wartościami w obu źródłach, na przykład w celu mapowania identyfikatorów kont na nazwy kont |
| Większy niż (>) | Dopasowuje rekordy, gdy wartość liczbowa lub data/czas lewego źródła jest większa lub późniejsza niż wartość prawego źródła |
| Większy lub równy (>=) | Dopasowuje rekordy, gdy wartość liczbowa lub data/czas lewego źródła jest identyczna, większa lub późniejsza niż wartość prawego źródła |
| Mniej niż (<) | Dopasowuje rekordy, gdy wartość liczbowa lub data/czas lewego źródła jest mniejsza lub wcześniejsza niż wartość prawego źródła |
| Mniejszy lub równy (<=) | Dopasowuje rekordy, gdy wartość liczbowa lub data/czas lewego źródła jest identyczna, mniejsza lub wcześniejsza niż wartość prawego źródła |
Aby dokładnie mapować wartości między źródłami, możesz zastosować obliczenia do kolumn źródłowych. Na przykład, aby mapować na numery kont w tabeli wymiarów mapy kont, może być konieczne wykonanie następujących czynności:
- Dostosuj wartości w pojedynczej kolumnie źródłowej, na przykład w celu wyodrębnienia pierwszych sześciu cyfr z numerów kont w tabeli faktów bilansu próbnego -
SS_LEFT(tb.account, 6) - Użyj wartości z kolumn wielu źródeł, takich jak łączenie lub konkatenacja- numerów kont i identyfikatorów z wcześniej połączonych tabel faktów Trial Balance i tabeli wymiarów Entity Map, odpowiednio-
CONCAT(tb.account,entity.id) - Zdefiniuj wspólny wzorzec w ramach wartości kolumny, na przykład w celu odizolowania numeru konta od prefiksów lub sufiksów w tabeli faktów Trial Balance -
tb.account LIKE __1005%
Uwaga: Aby zdefiniować wzorzec, możesz użyć symboli wieloznacznych do reprezentowania znaków do zignorowania - podkreślenia (
_) dla pojedynczego znaku lub znaku procentu (%) dla braku lub wielu znaków.
Aby zastosować obliczenia do wartości źródła:
- W złączeniu wybierz Calculated field pod źródłem z wartościami do dostosowania.
- W panelu Field properties przeciągnij kolumny do uwzględnienia w obliczeniach z Sources do Included columns.
Uwaga: Aby zapewnić prawidłowy SQL, uwzględnij tylko kolumny z wybranego źródła.
- W sekcji Calculation utwórz operację w języku SQL (Structured Query Language), która zostanie zastosowana do wartości kolumn.
- Aby odnieść się do kolumny w obliczeniach, kliknij ją lub wybierz Uwzględnij w obliczeniach z menu pod Uwzględnione kolumny lub wprowadź jej numer w nawiasach, np.
{1}+{2}. - Aby szybko dodać operator SQL lub funkcję do obliczenia, wybierz ją z menu Obliczenia .
- Aby odnieść się do kolumny w obliczeniach, kliknij ją lub wybierz Uwzględnij w obliczeniach z menu pod Uwzględnione kolumny lub wprowadź jej numer w nawiasach, np.
- W złączeniu wybierz sposób dopasowywania rekordów na podstawie wartości połączonych kolumn:
Operator Opis Równy (=) Dopasowuje rekordy z identycznymi wartościami w obu źródłach Nie równa się (!=) Dopasowuje rekordy z różnymi wartościami w obu źródłach, na przykład w celu mapowania identyfikatorów kont na nazwy kont Na przykład Jeśli pole wyliczane definiuje wzorzec z symbolami wieloznacznymi, dopasowuje rekordy z wartościami pasującymi do wzorca Nie jak Jeśli pole obliczane definiuje wzorzec z symbolami wieloznacznymi, dopasowuje rekordy z wartościami, które nie pasują do wzorca Większy niż (>) Dopasowuje rekordy, gdy wartość liczbowa lub data/czas lewego źródła jest większa lub późniejsza niż wartość prawego źródła Większy lub równy (>=) Dopasowuje rekordy, gdy wartość liczbowa lub data/czas lewego źródła jest identyczna, większa lub późniejsza niż wartość prawego źródła Mniej niż (<) Dopasowuje rekordy, gdy wartość liczbowa lub data/czas lewego źródła jest mniejsza lub wcześniejsza niż wartość prawego źródła Mniejszy lub równy (<=) Dopasowuje rekordy, gdy wartość liczbowa lub data/czas lewego źródła jest identyczna, mniejsza lub wcześniejsza niż wartość prawego źródła
Krok 3. Zdefiniuj wszystkie połączenia złożone
Pojedyncze sprzężenie może mapować wiele wartości pomiędzy swoimi źródłami. Aby zmapować dodatkowe pary wartości w ramach sprzężenia:
- Kliknij Dodaj pole.
- Określ dodatkowe kolumny lub pola obliczeniowe do mapowania między źródłami.
- Wybierz, czy chcesz dołączyć do wiele zmapowanych wartości (i), czy tylko określone wartości na podstawie danych (lub).
Jeśli wiele wartości w źródle odpowiada różnym wartościom w innym źródle, wybierz i, aby dopasować rekordy na podstawie wielu zmapowanych wartości.
Na przykład, jeśli tabela faktów Trial Balance ma kolumny, które mapują się na kombinację kolumn kluczowych Account number i Entity w tabeli wymiarów Account Mapping, kliknij i i połącz odpowiednie kolumny tabel.
Uwaga: W edytorze SQL relacja wygląda następująco JOIN ON (TB.entity = AccountMap.entity) AND (TB.account = AccountMap.account)
Jeśli wartości źródła mogą odpowiadać wielu wartościom w innym źródle w zależności od danych, wybierz lub, aby dopasować rekordy na podstawie określonych zmapowanych wartości.
Na przykład, jeśli kolumna klucza Konto w tabeli wymiaru Mapowanie kont mapuje się na kolumnę Konto lub Subkonto w tabeli faktów Bilans próbny, kliknij lub i dołącz kolumnę klucza do obu kolumn tabeli faktów.
Uwaga: W edytorze SQL , relacja wygląda następująco JOIN ON (AccountMap.account = TB.account) OR (AccountMap.account = TB.subaccount)
Uwaga: Jeśli twoje sprzężenie złożone zawiera zarówno operatory i, jak i lub, dopasowuje rekordy spełniające wszystkie kryteria oddzielone i oraz wszystkie spełniające kryteria oddzielone lub.
Krok 4. Wybierz sposób łączenia rekordów źródeł
W złączeniu wybierz sposób łączenia rekordów źródeł w wynikach zapytania:
Po zdefiniowaniu relacji między wszystkimi źródłami zapytania, kliknij Zapisz .
Uwaga: Po zapisaniu zapytanie automatycznie usuwa wszystkie źródła bez zdefiniowanej relacji.
<!--Performing a UNION
When you add a relationship between two sources, you create a
JOIN clause in the query's SQL, which combines the data
into new columns. To instead combine your data into new rows,
you can use a UNION operator in the SQL Editor.
However, a union may create more records or rows
than Spreadsheets or another consumer of the results can support.
As an alternative,
create a table
and append the sources' data as datasets, which you can then slice-and-dice
and analyze in a query.