Przeskocz do zawartości głównej

Declare

Instrukcja Declare służy do tworzenia definicji pól, w których można określić relacje między polami a funkcjami. Definicje zestawów pól można wykorzystać do automatycznego generowania pochodnych pól, których można użyć jako wymiarów. Można na przykład utworzyć definicję kalendarza i użyć jej do wygenerowania z pola daty powiązanych wymiarów takich jak rok, miesiąc, tydzień i dzień.

Instrukcji Declare można używać albo do skonfigurowania nowej definicji pola, albo do utworzenia definicji pola na podstawie już istniejącej definicji.

Konfigurowanie nowej definicji pola

Składnia:

definition_name:

Declare [Field[s]] Definition [Tagged tag_list ]

[Parameters parameter_list ]

Fields field_list 

Argumenty:

Argument Opis
definition_name

Nazwa definicji pola, zakończona dwukropkiem.

OstrzeżenieJako nazwy definicji pola nie należy używać autoCalendar, gdyż jest to nazwa zarezerwowana dla automatycznie generowanych szablonów kalendarza.

Przykład:  

Calendar:

tag_list

Rozdzielana przecinkami lista znaczników stosowanych do pól pochodnych tworzonych na podstawie tej definicji pola. Stosowanie znaczników nie jest obowiązkowe, ale jeśli nie zostaną podane znaczniki określające kolejność sortowania, na przykład $date, $numeric lub $text, pole pochodne będzie domyślnie sortowane według kolejności ładowania.

Przykład:  

'$date'Thank you for bringing this to our attention, and apologies for the inconvenience.

Znaczniki pól

parameter_list

Rozdzielana przecinkami lista parametrów. Parametr ma definicję w postaci name=value i otrzymuje wartość początkową, którą można zastąpić przy ponownym wykorzystaniu definicji pola. Opcjonalne.

Przykład:  

first_month_of_year = 1

field_list

Rozdzielana przecinkami lista pól generowanych, gdy używana jest definicja pola. Definicja pola ma postać <expression> As field_name tagged tag. Symbol $1 umożliwia odwoływanie się do pola danych, z którego mają być generowane pola pochodne.

Przykład:  

Year($1) As Year tagged ('$numeric')

Przykład:

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') ;
 

Kalendarz został zdefiniowany. Teraz można stosować go do załadowanych pól daty, w tym przypadku OrderDate i ShippingDate, używając klauzuli Derive.

Pola pochodne (pełny przykład)

Ponowne używanie istniejącej definicji pola

Składnia:

<definition name>:

Declare [Field][s] Definition

Using <existing_definition> 

[With <parameter_assignment> ]

Argumenty:

Argument Opis
definition_name

Nazwa definicji pola, zakończona dwukropkiem.

Przykład:  

MyCalendar:

existing_definition

Definicja pola, która zostanie ponownie użyta podczas tworzenia nowej definicji pola. Nowa definicja pola będzie działać analogicznie do definicji, na której jest oparta, chyba że zostanie podany argument parameter_assignment zmieniający wartość używaną w wyrażeniach pola.

Przykład:  

Using Calendar

parameter_assignment

Rozdzielana przecinkami lista przypisań parametrów. Przypisanie parametru ma postać name=value i powoduje zastąpienie wartości parametru ustawionej w bazowej definicji pola. Opcjonalne.

Przykład:  

first_month_of_year = 4

Przykład:

W tym przykładzie ponownie użyjemy definicji kalendarza utworzonej w poprzednim przykładzie. W tym przypadku chcemy używać roku obrachunkowego zaczynającego się w kwietniu. Można to osiągnąć, przypisując parametrowi first_month_of_year wartość 4, co wpłynie na wartość zdefiniowanego pola DayNumberOfYear.

Posłużymy się tutaj danymi i definicją pola z poprzedniego przykładu.

MyCalendar: DECLARE FIELD DEFINITION USING Calendar WITH first_month_of_year=4;
 
DERIVE FIELDS FROM FIELDS OrderDate,ShippingDate USING MyCalendar;
 

Po przeładowaniu skryptu ładowania danych pola wygenerowane będą dostępne w edytorze arkusza pod nazwami OrderDate.MyCalendar.* i ShippingDate.MyCalendar.*.

Zob. także