Przeskocz do zawartości głównej Przejdź do treści uzupełniającej

Pola pochodne

Mając grupę powiązanych pól lub pole zawierające informacje dające się podzielić na mniejsze składowe przydatne przy tworzeniu wymiarów lub miar, można tworzyć definicje pól umożliwiające generowanie pól pochodnych. Typowym przykładem jest pole daty, na podstawie którego można określić kilka atrybutów, takich jak rok, miesiąc, numer tygodnia lub nazwa dnia. Wszystkie te atrybuty można obliczyć w wyrażeniu wymiaru z użyciem funkcji daty Qlik Sense, ale jest też inna możliwość: utworzenie definicji kalendarza wspólnej dla wszystkich pól o typie daty. Definicje pól są przechowywane w skrypcie ładowania danych.

InformacjaDomyślne definicje pól kalendarza dla Qlik Sense są zawarte w autoCalendar dla pól danych załadowanych za pomocą Menedżera danych. Więcej informacji zawierają tematy Automatyczne wyprowadzanie pól dat przy użyciu obiektu AutoCalendar i Dodawanie do aplikacji danych z połączeń i nowych plików.

Deklarowanie definicji pól kalendarza

Do tworzenia definicji pól pochodnych służy instrukcja Declare. Umożliwia ona definiowanie atrybutów pola, w tym przypadku atrybutów dotyczących daty. Opis każdego pola ma postać <expression> As field_name tagged tag. Stosowanie znaczników jest opcjonalne, ale może wpływać na kolejność sortowania pola pochodnego. Symbol $1 umożliwia odwoływanie się do pola danych, z którego mają być generowane pola pochodne.

Ostrzeżenie Jeśli nie tworzysz własnego obiektu AutoCalendar ani nie pracujesz z automatycznie skonfigurowanym obiektem [autoCalendar] utworzonym przez Menedżer danych, nie używaj autoCalendar jako nazwy definicji pól kalendarza. Ta nazwa jest zarezerwowana dla automatycznie generowanych szablonów kalendarza. Zobacz temat Automatyczne wyprowadzanie pól dat przy użyciu obiektu AutoCalendar.
Calendar: DECLARE FIELD DEFINITION TAGGED '$date' Parameters first_month_of_year = 1 Fields Year($1) As Year Tagged ('$numeric'), Month($1) as Month Tagged ('$numeric'), Date($1) as Date Tagged ('$date'), Week($1) as Week Tagged ('$numeric'), Weekday($1) as Weekday Tagged ('$numeric'), DayNumberOfYear($1, first_month_of_year) as DayNumberOfYear Tagged ('$numeric');
 

Więcej informacji zawiera temat Declare.

Mapowanie pól danych na kalendarz z użyciem instrukcji Derive

Następnym krokiem jest użycie instrukcji Derive do zmapowania istniejących pól danych na kalendarz. Spowoduje to utworzenie pól pochodnych. Można to zrobić w skrypcie ładowania danych na trzy sposoby:

  • mapowanie konkretnych pól według nazwy pola,

    DERIVE FIELDS FROM FIELDS OrderDate,ShippingDate USING Calendar;
  • mapowanie wszystkich pól z określonymi znacznikami pola,

    DERIVE FIELDS FROM EXPLICIT TAGS ('$date') USING Calendar;
  • mapowanie wszystkich pól zawierających jeden ze znaczników z definicji pola (w powyższym przykładzie jest to $date).

    DERIVE FIELDS FROM IMPLICIT TAG USING Calendar;

W tym przypadku można użyć dowolnej z tych trzech metod.

Więcej informacji zawiera temat Derive.

Automatyczne wyprowadzanie pól dat przy użyciu obiektu AutoCalendar

Jeśli używasz narzędzia Menedżer danych do tworzenia aplikacji i ładowania danych, kalendarz o nazwie [autoCalendar] jest automatycznie wstawiany do skryptu ładowania, aby zapewnić domyślne definicje kalendarza. Są one widoczne w logice biznesowej aplikacji.

W przypadku aplikacji tworzonych przy użyciu skryptów, które zawierają pola daty, możesz wstawić ten kod [autoCalendar], pokazany poniżej, do skryptu w sekcji po załadowaniu wszystkich odpowiednich pól daty. Dzięki temu użytkownicy aplikacji mogą korzystać ze wszystkich dostępnych typów analiz opartych na okresach, w tym tych, które umożliwiają tworzenie inteligentnych arkuszy. Należy pamiętać, że kalendarz musi mieć tytuł [autocalendar], aby okresy kalendarzowe mogły zostać poprawnie dodane w logice biznesowej.

Zmodyfikuj nazwy pól [My_Date_Field1] i [My_Date_Field2] w wierszu DERIVE FIELDS FROM FIELDS [My_Date_Field1], [My_Date_Field2] USING [autoCalendar] ;, aby połączyć pole daty z obliczeniami obiektu AutoCalendar generującymi nowe pochodne pola daty. Jeśli masz tylko jedno pole daty do powiązania z obiektem AutoCalendar, usuń [My_Date_Field2]. Podobnie dodaj dodatkowe pola daty, jeśli masz więcej niż dwa pola daty, dla których chcesz włączyć obiekt AutoCalendar.

[autoCalendar]:
  DECLARE FIELD DEFINITION Tagged ('$date')
FIELDS		
  Dual(Year($1), YearStart($1)) AS [Year] Tagged ('$axis', '$year'),
  Dual('Q'&Num(Ceil(Num(Month($1))/3)),Num(Ceil(NUM(Month($1))/3),00)) AS [Quarter] Tagged ('$quarter', '$cyclic'),
  Dual(Year($1)&'-Q'&Num(Ceil(Num(Month($1))/3)),QuarterStart($1)) AS [YearQuarter] Tagged ('$yearquarter', '$qualified'),
  Dual('Q'&Num(Ceil(Num(Month($1))/3)),QuarterStart($1)) AS [_YearQuarter] Tagged ('$yearquarter', '$hidden', '$simplified'),
  Month($1) AS [Month] Tagged ('$month', '$cyclic'),
  Dual(Year($1)&'-'&Month($1), monthstart($1)) AS [YearMonth] Tagged ('$axis', '$yearmonth', '$qualified'),
  Dual(Month($1), monthstart($1)) AS [_YearMonth] Tagged ('$axis', '$yearmonth', '$simplified', '$hidden'),
  Dual('W'&Num(Week($1),00), Num(Week($1),00)) AS [Week] Tagged ('$weeknumber', '$cyclic'),
  Date(Floor($1)) AS [Date] Tagged ('$axis', '$date', '$qualified'),
  Date(Floor($1), 'D') AS [_Date] Tagged ('$axis', '$date', '$hidden', '$simplified'),
  If (DayNumberOfYear($1) <= DayNumberOfYear(Today()), 1, 0) AS [InYTD] ,
  Year(Today())-Year($1) AS [YearsAgo] ,
  If (DayNumberOfQuarter($1) <= DayNumberOfQuarter(Today()),1,0) AS [InQTD] ,
  4*Year(Today())+Ceil(Month(Today())/3)-4*Year($1)-Ceil(Month($1)/3) AS [QuartersAgo] ,
  Ceil(Month(Today())/3)-Ceil(Month($1)/3) AS [QuarterRelNo] ,
  If(Day($1)<=Day(Today()),1,0) AS [InMTD] ,
  12*Year(Today())+Month(Today())-12*Year($1)-Month($1) AS [MonthsAgo] ,
  Month(Today())-Month($1) AS [MonthRelNo] ,
  If(WeekDay($1)<=WeekDay(Today()),1,0) AS [InWTD] ,
  (WeekStart(Today())-WeekStart($1))/7 AS [WeeksAgo] ,	
  Week(Today())-Week($1) AS [WeekRelNo] ;

DERIVE FIELDS FROM FIELDS [My_Date_Field1], [My_Date_Field2] USING [autoCalendar] ;

Jeśli zrobisz to prawidłowo, w logice biznesowej aplikacji zostanie automatycznie utworzona pewna liczba okresów kalendarzowych i będzie można korzystać z typów analiz opartych na okresach w Wnioski.

Więcej informacji zawiera temat Używanie inteligentnych arkuszy w funkcji Wnioski do analiz opartych na okresach.

Używanie pól pochodnych daty w wizualizacji

Program Qlik Sense będzie rozpoznawać pola pochodne daty, jeśli wcześniej utworzono definicję kalendarza i zmapowano pola, tak jak w powyższym przykładzie. Pola te są dostępne w sekcji Pola daty i czasu w panelu zasobów Pola. Wszystkie pola pochodne są też dostępne w edytorze wyrażeń oraz podczas tworzenia i edytowania wymiarów.

Więcej informacji zawiera temat Pola daty i czasu.

Czy ta strona była pomocna?

Jeżeli natkniesz się na problemy z tą stroną lub jej zawartością — literówkę, brakujący krok lub błąd techniczny — daj nam znać, co możemy poprawić!