Tworzenie powiązań między wyrażeniami w aplikacjach szablonu On-demand
Powiązania między danymi w aplikacji szablonu określają dane z odpowiadającej aplikacji selekcji, które są używane do tworzenia zapytań wydawanych podczas ładowania danych do aplikacji On-demand.
Podstawowa forma wiązania wyrażeń--$(odag_FIELDNAME)--nie jest jedyną dostępną metodą wiązania wyrażeń. Inne prefiksy mogą służyć do doprecyzowywania wyborów i zapewnienia, że aplikacja szablonu załaduje dane prawidłowo.
Dostępne prefiksy wiążące
Ogólna forma prefiksu to odag[s|o][n][cnt] gdzie:
- s – zawiera tylko wybrane wartości
- o – zawiera tylko wartości opcjonalne
- n – wybiera wersję numeryczną, domyślnie bez cudzysłowów
- cnt – wstawia numer wartości zamiast wartości rzeczywistych
Poniższa tabela zawiera listę wszystkich dostępnych wersji prefiksów wiążących. Przykłady zakładają pole o nazwie MyField z 1,2,3 jako wybranymi wartościami (wartości zielone) i 4 jako opcjonalną wybraną wartością (wartość biała).
Prefiks | Opis | Przykład | Zastąpione przez |
---|---|---|---|
odag_ | Zastępowane przez wybrane (zielone) i opcjonalne (białe) wartości. Wybiera wersję tekstową wartości. Jest to standardowy prefiks dla wartości ciągów. | $(odag_MyField) | '1','2','3','4' |
odagcnt_ | Zastępowane przez numer wartości w odpowiednim wiązaniu odag_ . Ten prefiks służy do optymalizacji zapytań. | $(odagcnt_MyField) | 4 |
odagn_ |
Zastępowane przez wybrane (zielone) i opcjonalne (białe) wartości. Wybiera wersję numeryczną wartości. Jest to standardowy prefiks dla wartości numerycznych. Informacja
Jeśli model danych zakłada brak wybranych lub opcjonalnych wartości pola, to w wyrażeniu musi być określona wartość noValue. Na przykład $(odagn_MyField){"noValue":"-99999"}. Więcej informacji zawiera temat Zmiana znaków cudzysłowu wartości oraz znaków ograniczników. |
$(odagn_MyField) | 1,2,3,4 |
odagncnt_ | Zastępowane przez numer wartości w odpowiednim wiązaniu odagn_ . Służy do optymalizacji zapytań. | $(odagncnt_MyField) | 4 |
odago_ |
Zastępowane przez opcjonalne (białe) wartości. Wybiera wersję tekstową wartości. Służy do optymalizacji zapytań. |
$(odago_MyField) | '4' |
odagocnt_ | Zastępowane przez numer wartości w odpowiednim wiązaniu odago_ . Służy do optymalizacji zapytań. | $(odagocnt_MyField) | 1 |
odagon_ |
Zastępowane przez opcjonalne (białe) wartości. Wybiera wersję numeryczną wartości. Służy do optymalizacji zapytań. |
$(odagon_MyField) | 4 |
odagoncnt_ | Zastępowane przez numer wartości w odpowiednim wiązaniu odagon_ . Służy do optymalizacji zapytań. | $(odagoncnt_MyField) | 1 |
odags_ |
Zastępowane przez wybrane (zielone) wartości. Wybiera wersję tekstową wartości. Służy do optymalizacji zapytań. |
$(odags_MyField) | '1','2','3' |
odagscnt_ | Zastępowane przez numer wartości w odpowiednim wiązaniu odags_ . Służy do optymalizacji zapytań. | $(odagscnt_MyField) | 3 |
odagsn_ |
Zastępowane przez wybrane (zielone) wartości. Wybiera wersję numeryczną wartości. Służy do optymalizacji zapytań. |
$(odagsn_MyField) | 1,2,3 |
odagsncnt_ | Zastępowane przez numer wartości w odpowiednim wiązaniu odagsn_ . Służy do optymalizacji zapytań. | $(odagsncnt_MyField) | 3 |
Puste wartości są odfiltrowywane w wersjach tekstowych. Wartości nienumeryczne i NaN są odfiltrowywane w wersjach numerycznych.
Optymalizacja pod kątem dużej bazy danych
Prefiksy odags_ i odagsn_ są przeznaczone do optymalizacji zapytań. W przypadku braku wyboru w powiązanych polach prefiks odag_ zawiera wszystkie wartości, natomiast odags_ nie zawiera żadnych. W niektórych przypadkach bardziej efektywne jest wykorzystanie prefiksów odags_ i odagscnt_. Pozwala to na sprawdzenie, czy zestaw wartości jest pusty. Na przykład poniższe rozwiązanie jest bardziej efektywne, gdy nie dokonuje się wyboru w MyField, niż testowanie wszystkich wartości w odag_MyField:
Prefiks odags_ nie może być używany, gdy w aplikacji selekcji jest inne pole, które nie jest polem on-demand. Na przykład, jeśli użytkownik dokona wyboru wCountryName, ale wyrażenie wiążące jest na powiązanym polu CountryCode, nie można użyć prefiksu odags_. W tych przypadkach można użyć prefiksu odago_. Jeśli w wiązaniu odago_ nie ma żadnych wartości, może to oznaczać, że albo powinny zostać zawarte wszystkie wartości albo żadne.
Wiązanie wartości liczbowych
Gdy dane przeznaczone do powiązania z aplikacją On-demand zawierają liczby zamiast ciągów, wówczas użyteczne jest pozbycie się znaków cudzysłowów otaczających wartości w polach liczbowych. Jeśli na przykład rekordy sprzedaży zawierają kolumnę liczbową DAY_OF_WEEK, a użytkownik aplikacji selekcji ma wybrać dowolne kombinacje wartości DAY_OF_WEEK, należy rozszerzyć zapytanie agregacji używane do ładowania aplikacji selekcji w taki sposób, aby dołączyć wartości DAY_OF_WEEK zarówno do listy SELECT, jak i do listy GROUP BY. Jeśli cudzysłowy będą umieszczane wokół wartości DAY_OF_WEEK po ich wybraniu, wówczas może wystąpić błąd zapytania w środowisku wykonawczym, gdy baza danych nie obsługuje automatycznej konwersji typu z ciągu na liczbę.
Aby poradzić sobie z tą sytuacją, można użyć numerycznej wersji przyrostka wyrażenia wiążącego. Wymusza to na powiązaniu pola użycie wartości numerycznych z aplikacji selekcji, a nie wartości ciągu. Dostępne są następujące wersje numeryczne:
- odagn_
- odagon_
- odagsn_
Przy użyciu wersji numerycznych wartości są pobierane z części numerycznej w wartościach podwójnych, które przechowują wybrane wartości i wartości te są domyślnie pozbawione cudzysłowów.
Wymóg konkretnej liczby selekcji
W niektórych sytuacjach konieczne może być określenie wymogu, aby zapytanie aplikacji On-demand zawierało konkretną liczbę lub konkretny zakres wartości dla podanego pola. Jeśli na przykład zapytanie aplikacji On-demand zawiera klauzulę BETWEEN, która pozwala uzyskać dane o całej sprzedaży od daty początkowej do daty końcowej, wówczas wyrażenie tworzące powiązanie dla pola YEARQUARTER może zawierać sufiks [2], który będzie wymagać wyboru dokładnie dwóch wartości dla YEARQUARTER, jak poniżej:
Punkt nawigacji aplikacji On-demand w aplikacji selekcji pozostanie wyłączony, dopóki wybór nie będzie obejmował dokładnie dwóch wartości YEARQUARTER. Zostanie wyświetlony komunikat informujący o konieczności wyboru dokładnie dwóch wartości YEARQUARTER.
Ograniczenia dotyczące liczby wybranych elementów tworzą wymaganie wstępne łączące aplikację selekcji z aplikacją On-demand. Działanie takich wyrażeń różni się od działania wyrażeń tworzących powiązania, w których nie są stosowane ograniczenia dotyczące liczby. Gdy na przykład skrypt aplikacji szablonu zawiera wyrażenie tworzące powiązania bez ograniczenia dotyczącego liczby, jak poniżej:
wówczas nie istnieje żadne wymaganie określające, że aplikacja selekcji ma zawierać pole o nazwie MYFIELD ani że jakiekolwiek wartości tego pola (jeśli ono istnieje) muszą być wybrane. Jeśli aplikacja selekcji nie zawiera pola o nazwie MYFIELD lub jeśli użytkownik nie dokona żadnego wyboru z tego pola, wówczas punkt nawigacji aplikacji On-demand nadal może zostać włączony — w przypadku dokonania innych wyborów — w celu spełnienia warunku wartości dotyczącego limitu rekordów.
Jeśli jednak wyrażeniem tworzącym powiązania jest:
oznacza to, że istnieją dwa wymagania względem aplikacji selekcji:
- Aplikacja selekcji musi zawierać pole o nazwie MYFIELD.
- Użytkownik musi wybrać co najmniej jedną wartość dla pola MYFIELD.
Tego typu wyrażenia tworzące powiązania muszą być używane ostrożnie, ponieważ ograniczają zakres aplikacji selekcji, które mogą być używane z aplikacją szablonu. Nie należy używać tego ograniczenia dotyczącego liczby względem powiązań aplikacji selekcji, chyba że to wymaganie dotyczące liczby wybranych elementów ma dotyczyć wszystkich aplikacji selekcji, które łączą się z tą aplikacją szablonu.
W celu wykonania procesu tworzenia powiązań między danymi usługa aplikacji On-demand stosuje podejście oparte na podstawianiu ciągu, które nie uwzględnia komentarzy występujących w skrypcie. Oznacza to, że w komentarzach nie należy używać wyrażeń tworzących powiązania, chyba że po wygenerowaniu aplikacji te komentarze mają zawierać listę wartości powiązanych.
Możliwe jest także definiowanie innych ograniczeń dotyczących liczby. W poniższej tabeli podsumowano różne kombinacje ograniczeń dotyczących liczby wybranych elementów.
Wzorzec ograniczenia | Wymaganie dotyczące wyboru |
---|---|
$(odag_YEARQUARTER)[2] | Muszą zostać wybrane dokładnie 2 wartości YEARQUARTER. |
$(odag_YEARQUARTER)[2-4] | Wybór musi obejmować od 2 do 4 wartości YEARQUARTER. |
$(odag_YEARQUARTER)[2+] | Muszą zostać wybrane co najmniej 2 wartości YEARQUARTER. |
$(odag_YEARQUARTER)[2-] | Mogą zostać wybrane maksymalnie 2 wartości YEARQUARTER. |
Zmiana znaków cudzysłowu wartości oraz znaków ograniczników
Gdy lista wartości z pola wybranego w aplikacji selekcji zostanie wstawiona do skryptu aplikacji szablonu, wówczas wartości zostaną otoczone pojedynczymi cudzysłowami i będą rozdzielone przecinkami. Są to znaki domyślne dla cudzysłowów i ograniczników. Te wartości można zmieniać w składni dołączanej do instrukcji wiązania dla każdego pola. Na przykład:
Te nowe wartości są następnie używane podczas formatowania listy wartości wiążących pobieranych z aplikacji selekcji. Na przykład jeśli wybrane wartości są pierwszymi trzema miesiącami roku, wówczas lista zostanie skonstruowana w następujący sposób:
Domyślne wartości cudzysłowu i ogranicznika działają z większością standardowych baz danych SQL. Mogą one jednak nie działać z niektórymi bazami danych SQL i nie działają z większością dynamicznych źródeł danych, takich jak NoSQL i REST. W przypadku takich źródeł należy dołączyć wyrażenie wiązania, aby zmienić znaki cudzysłowów i ograniczników.
Poniższa tabela przedstawia parametry formatowania dla zmiany znaków cudzysłowu i ogranicznika.
Parametr | Wartość domyślna | Definicja |
---|---|---|
cudzysłów |
' (pojedynczy cudzysłów) dla prefiksów tekstowych pusty dla prefiksów numerycznych |
Będzie dodawany przed i po każdej wartości |
ogranicznik | , (przecinek) | Będzie dodawany między wszystkimi wartościami |
quoteReplace | '' (podwójne pojedyncze cudzysłowy) |
Jeżeli wartość nie jest pusta, a cudzysłów nie jest pusty, to wszystkie wystąpienia cytatu wewnątrz wartości zostaną zastąpione przez określony łańcuch. InformacjaquoteReplace nie jest obsługiwany jako parametr dla prefiksów numerycznych, takich jak odagn_. quoteReplace jest ignorowany przez prefiksy numeryczne.
|
noValue | (pusty) |
Jeśli dla danego pola nie wybrano żadnej wartości, zostanie użyta ta wartość. Parametr ten jest przydatny w przypadku, gdy w wyborze nie może być żadnych wartości danego pola. Wartość ta powinna być ustawiona na wartość, która nie istnieje w danych źródłowych. Na przykład dla wartości liczbowych należy użyć ujemnej wartości, jeśli wszystkie wartości w bazie danych są dodatnie. Informacja Dla wartości bez cudzysłowu parametr noValue musi być określony, jeśli wybrane wartości pola mogą być pustym zestawem.
|
W poniższych tabelach przedstawiono specyfikację formatu i wygenerowane wartości dla odag_ i odagn_. Wygenerowane wstawione wartości opierają się na domyślnych wartościach danych VAL1, VAL2.
Specyfikacja formatu | Opis | Wygenerowane wstawiane wartości |
---|---|---|
nie określono |
Lista wartości oddzielonych przecinkami, z cudzysłowem ' . |
'VAL1','VAL2' |
{"quote": "", "delimiter": ""} | Wartości konkatenowane | VAL1VAL2 |
{"quote": "X", "delimiter": "Y"} |
Wartości z cudzysłowem X i ogranicznikiem Y. | XVAL1XYXVAL2X |
{"quote": "XX", "delimiter": "YY"} | Wartości z cudzysłowem XX i ogranicznikiem YY. | XXVAL1XXYYXXVAL2XX |
{"quote": "X"} | Wartości z cudzysłowem X i ogranicznikiem , (domyślnie). | XVAL1X,XVAL2X |
{"delimiter": "YY"} | Wartości z cudzysłowem ' (domyślnie) i ogranicznikiem YY | 'VAL1'YY'VAL2' |
{"quote": ""} | Wartości bez cudzysłowu z ogranicznikiem ,. | VAL1,VAL2 |
{"quote": "A", "quoteReplace": "\\A"} |
Wartości z cudzysłowem A i rozdzielane przecinkiem (domyślnie). Wartość wewnątrz pola zostanie zastąpiona przez \A. Informacja
W tym przykładzie musi być podwójny \, ponieważ \ jest znakiem ucieczki w formacie json. |
AV\AL1A,AV\AL2A |
Specyfikacja formatu | Opis | Wygenerowane wstawiane wartości |
---|---|---|
nie określono |
Lista oddzielonych przecinkami wartości bez cudzysłowu. Należy pamiętać, że zostaną użyte wartości numeryczne. |
VAL1,VAL2 |
{"delimiter": "YY"} | Wartości bez cudzysłowu z ogranicznikiem YY | VAL1YYVAL2 |
{"quote": "A", "quoteReplace": "\\A"} | W porównaniu do prefiksu odag_ parametr quoteReplace będzie ignorowany. | AVAL1A,AVAL2A |
Przetwarzanie poszczególnych wartości
Gdy wymagane jest indywidualne przetwarzanie wartości pól, można użyć metody wbudowanej do wygenerowania wartości w zmiennej Values i wykonać dowolne przetwarzanie za pomocą Replace lub innej funkcji. W poniższym przykładzie funkcja Replace jest używana z wartościami zastępczymi.