The Intersection.Match function returns TRUE if the following conditions are met for each dimension listed:
Use the Intersection.Match function in a rule formula to identify the destination accounts of a rule-based driver.
Intersection.Match(dim-ref1[.dim-member-ref1][,dim-ref2[.dim-member-ref2]]*)
Intersection.Match(Product, Customer)
This example is equivalent to the following code:
(Source."Product".isNone()
OR Source."Product".DimMemRef=Destination."Product".DimMemRef)
AND
(Source."Customer".isNone()
OR Source."Customer".DimMemRef=Destination."Customer".DimMemRef)
This example ensures that the dimension members of the Product and Customer dimensions are the same in both source and destination accounts.
Intersection.Match(Product, Customer, Channel)This example is equivalent to the following code:
(Source."Product".isNone()
OR Source."Product".DimMemRef=Destination."Product".DimMemRef)
AND
(Source."Customer".isNone()
OR Source."Customer".DimMemRef=Destination."Customer".DimMemRef)
AND
(Source."Channel".isNone()
OR Source."Channel".DimMemRef=Destination."Channel".DimMemRef)
This example ensures that the dimension members of the Product, Customer, and Channel dimensions are the same in both source and destination accounts.
Intersection.Match(Product.Frisbee)This example is equivalent to the following code:
Source."Product".isNone()
OR
Source."Product".DimMemRef=Destination."Product".DimMemRef
This example ensures that the destination account has the dimension member named "Frisbee" in the Product dimension.
Notes:
You can use the Intersection.Match function to accomplish what the Sales Volume driver accomplished in previous versions of SAS Cost and Profitability Management.
For example, suppose there is a model with two dimensions, Product and Customer, in the Cost Object module. Here is the rule formula that was used for a Sales Volume driver:
(Source.Product.dimMemRef="None"
OR Source.Product.DimMemRef=Destination.Product.DimMemRef)
AND
(Source.Customer.dimMemRef="None"
OR Source.Customer.DimMemRef=Destination.Customer.DimMemRef)
AND
SoldQuantity <> 0
You can replace the entire previous formula with the following equivalent formula using Intersection.Match.
Intersection.Match(Product, Customer) and SoldQuantity<>0
This pattern matches intersections in the following way:
[Bike,None] matches [Bike,Target] and [Bike,WalMart]
[None,Target] matches [Bike,Target] and [Shirt,Target]
You can think of “None” as a type of wildcard. When an account is matched by the rule formula, an assignment is created, such as [Bike,None] –> [Bike,Target] and [Bike,None] –> [Bike,Walmart].
Although it is not shown, [Bike,Target] matches [Bike,Target] as long as the account is in a different module. This restriction prevents an unintended, and possibly meaningless loop.
Notice that Module is treated as a dimension and CostObj is a member of the dimension. This pattern can also be extended to any dimension, so the user can force it to match a specific member on the destination account. Here is an example:
Intersection.Match(Module.CostObj, Product.Ugly, Customer) and SoldQuantity<>0
This pattern replaces the following condition with a new formula:
(Source.Product.isNone()OR(Source.Product.DimMemRef=Destination.Product.DimMemRef))
Here is the new formula:
(Destination.Product.DimMemRef=”Ugly”).
The source account’s Product is not used in this case.