Forum Discussion

Dilbertfan's avatar
Dilbertfan
Frequent Visitor
1 year ago
Solved

Lookup & Concatenate Values in a Matrix

Hi All   Some time ago I posted a request for help (LINK) to compare two datasets names and their sensitivity, lookup up the combination value and then returning it at the intersection of a matrix ...
  • ABD128's avatar
    1 year ago

    Hi Dilbertfan 

     

    Try the below DAX:

     

    Look Up & Match Use Case (Concatenate Dataset) =

     

    VAR UseCaseRow = SELECTEDVALUE('fctSiPAssets 1'[UseCaseNo])

    VAR UseCaseCol = SELECTEDVALUE('fctSiPAssets 2'[UseCaseNo])

     

    -- Get all datasets selected in slicers

     

    VAR SelectedDataset1 = VALUES('fctSiPAssets 1'[Dataset ID])

    VAR SelectedDataset2 = VALUES('fctSiPAssets 2'[Dataset ID])

     

    -- Build dataset combinations via CROSSJOIN

     

    VAR AllDatasetCombinations =

    ADDCOLUMNS(

    CROSSJOIN(

    SelectedDataset1,

    SelectedDataset2

    ),

    "Dataset1_Alias", [Dataset ID],

    "Dataset2_Alias", [Dataset ID] )

     

    -- Filter combinations by UseCase intersection

     

    VAR FilteredCombinations =

    ADDCOLUMNS(

    AllDatasetCombinations,

    "CombinationText",

    VAR CurrentDataset1 = [Dataset1_Alias]

    VAR CurrentDataset2 = [Dataset2_Alias]

    -- Lookup Outcome

     

    VAR OutcomeFound =

    LOOKUPVALUE(

    'DatasetOutcome'[Outcome],

    'DatasetOutcome'[Dataset 1], CurrentDataset1,

    'DatasetOutcome'[Dataset 2], CurrentDataset2 )

     

    -- Check if datasets match row and column UseCase

     

    VAR MatchRow =

    CALCULATE(

    COUNTROWS('fctSiPAssets 1'),

    'fctSiPAssets 1'[Dataset ID] = CurrentDataset1,

    'fctSiPAssets 1'[UseCaseNo] = UseCaseRow

    ) > 0

     

    VAR MatchCol =

    CALCULATE(

    COUNTROWS('fctSiPAssets 2'),

    'fctSiPAssets 2'[Dataset ID] = CurrentDataset2,

    'fctSiPAssets 2'[UseCaseNo] = UseCaseCol

    ) > 0

     

    RETURN

    IF(MatchRow && MatchCol && NOT ISBLANK(OutcomeFound),

    CurrentDataset1 & " & " & CurrentDataset2 & " = " & OutcomeFound,

    BLANK() ) )

     

    RETURN

    CONCATENATEX( FILTER(FilteredCombinations, NOT ISBLANK([CombinationText])), [CombinationText], UNICHAR(10) )