Modyfikatory zestawów z wykorzystaniem funkcji zestawu
Czasami trzeba zdefiniować zestaw wartości pól za pomocą zagnieżdżonej definicji zestawu. Na przykład możesz chcieć wybrać wszystkich klientów, którzy kupili określony produkt, bez wybierania produktu.
W takich przypadkach użyj funkcji zestawu elementów P() i E(). Zwracają one zestawy elementów z odpowiednio możliwymi i wykluczonymi wartościami pola. W nawiasie możesz określić dane pole oraz wyrażenie zestawu, które definiuje zakres. Na przykład:
P({1<Year = {2021}>} Customer)
Spowoduje to zwrócenie zestawu klientów, którzy mieli transakcje w 2021 r. Możesz następnie użyć tego w modyfikatorze zestawu. Na przykład:
Sum({<Customer = P({1<Year = {2021}>} Customer)>} Amount)
To wyrażenie zestawu wybierze tych klientów, ale nie ograniczy wyboru do 2021 r.
Funkcji tych nie można używać w innych wyrażeniach.
Dodatkowo wewnątrz funkcji zestawu elementów można stosować tylko zestawy naturalne. Jest to zestaw rekordów, które można zdefiniować za pomocą prostego wyboru.
Przykład: zestaw zdefiniowany przez {1-$} nie może zawsze być określony poprzez wybór, nie jest więc zestawem naturalnym. Użycie tych funkcji w odniesieniu do zestawów innych niż naturalne zwróci nieoczekiwane wyniki.
Przykłady: wyrażenia wykresu dla modyfikatorów zestawu z funkcjami zestawu
Przykłady | Wyniki |
---|---|
sum( {$<Customer = P({1<Product={'Shoe'}>} Customer)>} Sales ) |
Zwraca wartość sprzedaży dla bieżącego wyboru, ale tylko tych klientów, którzy co najmniej raz kupili produkt „Shoe”. W tym przypadku funkcja elementowa P() zwraca listę możliwych klientów, których wskazuje wybór „Shoe” w polu Product. |
sum( {$<Customer = P({1<Product={'Shoe'}>})>} Sales ) |
Tak samo jak powyżej. Jeśli pole w funkcji elementowej zostanie pominięte, funkcja zwróci możliwe wartości pola wskazanego w przypisaniu zewnętrznym. |
sum( {$<Customer = P({1<Product={'Shoe'}>} Supplier)>} Sales ) |
Zwraca wartość sprzedaży dla bieżącego wyboru, ale tylko tych klientów, którzy co najmniej raz dostarczyli produkt „Shoe”. To znaczy, ze klient jest również dostawcą. W tym przypadku funkcja elementowa P() zwraca listę możliwych dostawców, których wskazuje wybór „Shoe” w polu Product. Lista dostawców jest następnie stosowana jako wybór w polu Customer. |
sum( {$<Customer = E({1<Product={'Shoe'}>})>} Sales ) |
Zwraca wartość sprzedaży dla bieżącego wyboru, ale tylko tych klientów, którzy nigdy nie kupili produktu „Shoe”. W tym przypadku funkcja elementowa E() zwraca listę klientów wykluczonych wyborem produktu „Shoe” w polu Product. |