.. macro-mif-from-csv: Model Instance Filters (MIF) from CSV File -------------------------------------------- .. index:: Macro function;fn.generate_filters *fn.generate_filters*: given input parameters: * An uploaded CSV filename: the filename of a file uploaded to ``data/File``, e.g. using the **File Management** menu. * Model Instance Filter (MIF) name: a name for an instance of ``data/ModelInstanceFilter`` * A model type to apply the MIF to, e.g.: ``device/msteamsonline/CsOnlineUser``. * A filter type: ``inclusion`` or ``exclusion`` (if not provided as parameter, default is ``inclusion``) create a MIF (``data/ModelInstanceFilter``) instance at the hierarchy where the function is run, containing the data in the CSV file. The MIF can then be selected in data syncs at the relevant hierarchy. Syntax: *{{ fn.generate_filters ,,[,] }}* .. note:: The MIF ``model_parent`` will be the parent of the input model. For example, if the input model is ``device/msteamsonline/CsOnlineUser`` then ``device/msteamsonline`` is the ``model_parent``. The CSV file format is interpreted as follows: * Header row: attribute(s) of ** (``attr_name``) * 2nd row onwards: value(s) which have ``equals`` match to attribute(s) .. note:: * Each value row in the CSV file represents a model filter instance with value ``equals`` the ``attr_name``. Filter instances are combined with logical OR. Refer to the *Model Instance Filter* topic in the Core Feature Guide. * If the CSV file contains more than one column, i.e multiple attributes and values, then the ``attr_filters`` list in the MIF instance will combine these with a logical AND. Refer to the *Model Instance Filter* topic in the Core Feature Guide. .. rubric:: Example For example, a CSV file (``InputFile.csv``) uploaded using the **File Management** menu at hierarchy ``sys.hcs.CS-P.VOSS-OPS.VOSS`` with a single attribute ``UserPrincipalName``: :: UserPrincipalName Dusty.Moyer@visionoss-dev.info Earl.Moore@visionoss-dev.info then the macro function run at hierarchy ``sys.hcs.CS-P.VOSS-OPS.VOSS`` called ``{{ fn.generate_filters InputFile.csv,MSOL_MIF,device/msteamsonline/CsOnlineUser }}`` will create MIF instance containing: :: { "meta": {}, "resources": [ { "meta": { "model_type": "data/ModelInstanceFilter", "pkid": "...", "schema_version": "...", "hierarchy": "sys.hcs.CS-P.VOSS-OPS.VOSS", "tags": [] }, "data": { "filter_type": "inclusion", "name": "MSOL_MIF", "model_parent": "device/msteamsonline", "model_filters": [ { "model_type": "device/msteamsonline/CsOnlineUser", "attr_filters": [ { "attr_name": "UserPrincipalName", "condition": "equals", "value": "Dusty.Moyer@visionoss-dev.info" } ] }, { "model_type": "device/msteamsonline/CsOnlineUser", "attr_filters": [ { "attr_name": "UserPrincipalName", "condition": "equals", "value": "Earl.Moore@visionoss-dev.info" } ] } ] } } ] }