Przeskocz do zawartości głównej

Konkatenowanie

Konkatenowanie to operacja polegająca na połączeniu dwóch tabel w jedną.

Wspomniane dwie tabele są dodawane do siebie przez umieszczenie jednej nad drugą z kolumną utworzoną dla każdej odrębnej nazwy kolumny. Dane nie są zmieniane i tabela wynikowa zawiera tę samą liczbę rekordów co dwie oryginalne tabele łącznie. Możliwe jest wykonanie kilku operacji konkatenowania sekwencyjnie co oznacza, że tabela wynikowa może zostać połączona na podstawie więcej niż dwóch tabel.

Konkatenowanie automatyczne

Jeśli kilka załadowanych tabel jest identycznych pod względem nazw i liczby pól, Qlik Sense dokonuje automatycznego łączenia (scalenia) zawartości różnych instrukcji w jedną tabelę.

Aby nastąpiło łączenie automatyczne, liczba i nazwy pól muszą być identyczne. Kolejność dwóch instrukcji LOAD jest dowolna, ale danej tabeli zostanie nadana nazwa pierwszej załadowanej tabeli.

Wykonaj następujące czynności:

  1. Otwórz Edytor ładowania danych w aplikacji Scripting Tutorial.
  2. Kliknij kartę Dates.
  3. Kliknij polecenie Ładuj dane.
  4. W oparciu o utworzony do tej pory skrypt ładowania Qlik Sense wczytuje 628 wierszy z pliku danych Dates.xlsx do Table2.

    Okno postępu ładowania danych
    Data load progress window

  5. W nowym wierszu w skrypcie w sekcji Dates skopiuj i wklej instrukcję LOAD dla Table2. Spowoduje to dwukrotne załadowanie danych. Nadaj nazwę drugiej tabeli Table2a.
  6. Można również usunąć istniejący skrypt oraz skopiować i wkleić następujący skrypt:

    Table2: LOAD "Date", Month (Date) as "Month", Quarter, "Week", "Year" FROM [lib://DataFiles/Dates.xlsx] (ooxml, embedded labels, table is Dates); Table2a: LOAD "Date", Month (Date) as "Month", Quarter, "Week", "Year" FROM [lib://DataFiles/Dates.xlsx] (ooxml, embedded labels, table is Dates);

    Skrypt powinien wyglądać następująco:

    Skrypt ładowania na karcie Dates
    Load script in Dates tab.

  7. Kliknij polecenie Ładuj dane.
  8. Aplikacja Qlik Sense nie ładuje tabeli Table2, a następnie Table2a. Zamiast tego, rozpoznaje, że tabela Table2a zawiera te same nazwy pól i liczbę pól co Table2. Następnie dodaje dane z Table2a do Table2 i usuwa tabelę Table2a. W wyniku tych operacji tabela Table2 zawiera teraz 1256 wierszy.

    Konkatenacja w oknie postępu ładowania danych
     Concatenation in data load progress window.

  9. Otwórz Przeglądarkę modelu danych.
  10. Kliknij przycisk Pokaż podgląd.
  11. Utworzona została tylko tabela Table2. Wybierz Table2. Tabela zawiera 256 wierszy.

    Przeglądarka modelu danych z tabelą Table2
    Data model viewer showing Table2.

Konkatenowanie wymuszone

Nawet jeśli kilka tabel zawiera różne zestawy pól, można nadal wymusić ich łączenie w programie Qlik Sense. W skrypcie służy do tego prefiks Concatenate, który dokonuje łączenia tabeli z inną wskazaną z nazwy tabelą lub z ostatnio utworzoną tabelą.

Wykonaj następujące czynności:

  1. Wyedytuj instrukcję LOAD dla tabeli Table2a, dodając ciąg Concatenate i w komentarzu ujmij ciąg Week.
  2. Skrypt powinien teraz wyglądać następująco:

    Table2a: Concatenate LOAD "Date", Month (Date) as "Month", Quarter, // "Week", "Year" FROM [lib://DataFiles/Dates.xlsx] (ooxml, embedded labels, table is Dates);

    Oznaczenie parametru Week jako komentarza sprawia, że tabele nie są identyczne.

  3. Kliknij polecenie Ładuj dane.
  4. Otwórz Przeglądarkę modelu danych.
  5. Nie została utworzona tabela Table2a.

  6. Kliknij Table2 w przeglądarce modelu danych, a następnie kliknij przycisk Podgląd.
  7. Tabela zawiera pola Date, Month, Quarter, Week i Year. Pole Week jest nadal wyświetlane, ponieważ zostało załadowane z tabeli Table2.

  8. Kliknij pozycję Week w sekcji Table2. W podglądzie widać teraz, że liczba wartości niezerowych dla pola wynosi 628. Jednak po kliknięciu dowolnego z pozostałych pól widać, że liczba wartości niezerowych wynosi 1256. Week załadowano tylko raz z Table2. Liczba wartości lub rekordów jest sumą liczby rekordów w tabelach Table2 i Table2a.

Zapobieganie konkatenowaniu

Jeśli kilka załadowanych tabel jest identycznych pod względem nazw i liczby pól, Qlik Sense dokonuje automatycznego łączenia (scalenia) zawartości różnych instrukcji w jedną tabelę. Można tego uniknąć za pomocą instrukcji NoConcatenate. Tabela załadowana powiązaną z nią instrukcją LOAD lub SELECT nie będzie wtedy łączona z istniejącą tabelą.

Wykonaj następujące czynności:

  1. Aby całkowicie rozdzielić zawartość dwóch tabel, dodaj NoConcatenate do instrukcji LOAD w tabeli Table2a i zmień nazwy pól tak, aby w rozwiązaniuQlik Sense klucz syntetyczny nie był tworzony w oparciu o pasujące pola. Usuń znaczniki komentowania przy ciągu Week w tabeli Table2, aby dwie tabele zawierały te same pola.
  2. Skrypt powinien teraz wyglądać następująco:

    Table2: LOAD "Date", Month (Date) as "Month", Quarter, "Week", "Year" FROM [lib://DataFiles/Dates.xlsx] (ooxml, embedded labels, table is Dates); Table2a: NoConcatenate LOAD "Date" as "Date2", Month (Date) as "Month2", Quarter as "Quarter2", "Week" as "Week2", "Year" as "Year2" FROM [lib://DataFiles/Dates.xlsx] (ooxml, embedded labels, table is Dates); 

  3. Kliknij polecenie Ładuj dane.
  4. Otwórz Przeglądarkę modelu danych.
  5. Obecnie obie tabele są całkowicie od siebie oddzielone.

    Przeglądarka modelu danych z tabelami Table2 i Table 2a
    Data model viewer showing Table2 and Table 2a.

  6. Po zakończeniu prezentacji konkatenowania tabela Table2a nie jest już potrzebna. Usuń wszystkie wiersze w instrukcji LOAD dla Table2a i kliknij przycisk Załaduj dane.