Set-modificaties die gebruikmaken van set-functies
Soms moet u een set met veldwaarden definiëren met behulp van een geneste set-definitie. U wilt mogelijk alle klanten selecteren die een specifiek product hebben geselecteerd, zonder het product te selecteren.
In dergelijke gevallen gebruikt u de elementsetfuncties P() en E(). Deze retourneren de elementsets van mogelijke waarden en uitgesloten waarden van een veld. Binnen de haakjes kunt u het desbetreffende veld opgeven en een set-uitdrukking die het bereik definieert. Bijvoorbeeld:
P({1<Year = {2021}>} Customer)
Deze retourneert een set van klanten met transacties in 2021. U kunt deze vervolgens gebruiken in een set-modificatie. Bijvoorbeeld:
Sum({<Customer = P({1<Year = {2021}>} Customer)>} Amount)
Deze set-uitdrukking selecteert vervolgens deze klanten, maar beperkt de selectie niet tot 2021.
Deze functies kunnen niet worden gebruikt in andere uitdrukkingen.
Bovendien kunnen alleen natuurlijke sets worden gebruikt in de elementsetfuncties. Met andere woorden een set records die met een eenvoudige selectiebewerking kan worden gedefinieerd.
Bijvoorbeeld, de set van {1-$} kan niet altijd door middel van een selectie worden gedefinieerd en is dan ook geen natuurlijke set. Als deze functies op niet-natuurlijke sets worden gebruikt, worden er onverwachte resultaten geretourneerd.
Voorbeelden: dagramuitdrukkingen voor set-modificaties die gebruikmaken van setfuncties
Voorbeelden | Resultaten |
---|---|
sum( {$<Customer = P({1<Product={'Shoe'}>} Customer)>} Sales ) |
Retourneert de verkoop voor de huidige selectie, maar alleen de klanten die ooit het product 'Shoe' gekocht hebben. De elementfunctie P( ) retourneert hier een lijst met mogelijke klanten; de klanten die worden geïmpliceerd door de selectie 'Shoe' in het veld Product. |
sum( {$<Customer = P({1<Product={'Shoe'}>})>} Sales ) |
Hetzelfde als hierboven. Als het veld in de elementfunctie wordt weggelaten, retourneert de functie de mogelijke waarden van het veld dat is opgegeven in de outer-toewijzing. |
sum( {$<Customer = P({1<Product={'Shoe'}>} Supplier)>} Sales ) |
Retourneert de verkoop voor de huidige selectie, maar alleen de klanten die ooit het product 'Shoe' geleverd hebben. De klant is dus ook een leverancier. De elementfunctie P( ) retourneert hier een lijst met mogelijke leveranciers; de leveranciers die worden geïmpliceerd door de selectie 'Shoe' in het veld Product. De lijst met leveranciers wordt vervolgens gebruikt als selectie in het veld Customer. |
sum( {$<Customer = E({1<Product={'Shoe'}>})>} Sales ) |
Retourneert de verkoop voor de huidige selectie, maar alleen de klanten die nooit het product 'Shoe' hebben gekocht. De elementfunctie E( ) retourneert hier een lijst met uitgesloten klanten; de klanten die worden uitgesloten door de selectie 'Shoe' in het veld Product. |