We have a value for a column in a table that's not the primary key or display key, which we can filter with 'ParameterSubscriptionFilter' so there's only one row and get a specific cell value, but we want to go one step further and get a parameter from another table from that cell value.
The table we're using the 'ParameterSubscriptionFilter' on has a column that contains the primary key to another table, which has a column in being the final value we want to display on the visual overview, is this currently possible?
Currently I'm testing on a view, so hard coding element ID's
Enhanced service
Service ID = 123456/72
Hidden element ID = 123456/73
Monitor Output Table
Table ID = 10400
PK column ID = 10401
Example row PK = Output1
Resource Name column ID = 10403
Example row for Resource Name = test1
Virtual Matrix Element
ID = 123477/9
Virtual Outputs Table
Table ID = 2000
PK column ID = 2001
Example row for the PK = 10
Connected Input column ID (contains the ID of the row of the Virtual Inputs table but not foreign key linked) = 2013
Example row for Connected Input = 3
Label column ID = 2003
Example row for Label = test1
Virtual Inputs table
Table ID = 1800
PK column ID = 1801
Example row for the PK = 3
Label column ID = 1803
Example row for Label = TestInput3
TestInput3 being the final value we want to display.
If the relations between your tables are correctly set in the protocol, you should be able to use the first way described in the docs to filter on the other table column.
Let's call the table from which your eventual value comes table 100 and the one which your filter comes from 200, then you can circumvent having to get the DK or PK on table 200 altogether by just directly filtering on that table as in the first example on that page.
EDIT:
- Link your parameter shape to the table of the final table (the one you actually want to display the value of). Let's say that's "TableElement" and the pid is 504 in your table.
- Set up a ParameterSubscriptionFilter that filters on the right primary key. Let's say the pid of the PK column is 501.
- As the comparing value, set up a param placeholder that gets the right entry from your other table. Let's say that table is on the same "TableElement", but the column id you want is now 1010.
- Finally, set the key of the param placeholder to the result of your enhanced service's parameter, again through another param placeholder. Let's call that element "EnhancedService" and the pid of the parameter is 100.
Here's the result of step 1-4, which gives the eventual right entry of parameter 504.
EDIT 2:
I confirmed that the SubscriptionFilter shape data will correctly apply to the param placeholder as well. That means you can do this:
In this case, the SubscriptionFilter will apply to the param placeholder in ParameterSubscriptionFilter. Subsequently, the ParameterSubscriptionfilter will apply to the param placeholder.
I updated my answer with something that works for me. Hope it helps you further.
I’ve updated my question with detailed examples ID’s etc.
[param:123456/73,10403,Output1] returns the expected test1
[param:123477/9,2013,[param:123456/73,10403,Output1] doesn’t return anything
Element: 123477/9
Parameter: 1803
ParameterSubscriptionFilter: value=1801 == [param:123477/9,2013,[param:123456/73,10403,Output1] also doesn’t return anything
Unless you pasted incorrectly, you’re probably missing a single ‘]’ at the end of your ParameterSubscriptionFilter => [param:123477/9,2013,[param:123456/73,10403,Output1]]*
It was indeed, unfortunately it made no difference adding the missing square bracket.
The first parameter is in an enhanced service, which is not linked in any way to the two tables, beyond having a value from the first table that’s not the PK or DK.
We then want to lookup the row in the first table which in a different standard element (not the PK or DK as detailed above), finally retrieve the value from the last table that we have the primary key for from the first table.