Example: Manually specifying data filters

Jim needs to create a set of data filters based on sales territories.

In Unica Campaign, the customer tables have already been mapped and audience levels have been defined.

Obtaining information

Jim determines that the Territory table contains the fields he needs to specify field constraints for the data filters.

The following table illustrates the information Jim obtains about the customer fields and their Unica Campaign mappings.

Table 1. Territory table fields
Fields

(physical name)

Fields

(name in Unica Campaign)

Data Data type

cust_region

CustomerRegion

  • Africa
  • Asia
  • Europe
  • Middle East
  • North America

java.lang.String

hh_id

HouseholdID

N/A

java.lang.Long

indiv_id

IndividualID

N/A

java.lang.Long

Jim learns that the audience names used in Unica Campaign are household and individual. He notes that the Territory table contains two audience fields. The hh_id field corresponds to the household audience. The indiv_id field in the Territory table corresponds to the individual audience.

Because Jim must create one logical field for each audience, and one for the field constraint field, he knows he needs a total of three logical fields.

Jim also knows he needs to group the data filters in a data configuration. He decides to name his data configuration Territory.

Jim is now ready to create the XML.

Creating the XML

Here is the XML that Jim creates. Values based on the information he obtained are shown in bold .


<ExecuteBatch>
                <!-- ********************************** -->
                <!--          Data configuration        -->
                <!-- ********************************** -->
  <name>SeedData</name>
  <operations>
      <ExecuteBatch>
        <name>DataFilters</name>
        <operations>
          <AddDataConfiguration>
            <dataConfiguration>
                <id>1</id>
                <name>Territory</name>
            </dataConfiguration>
           </AddDataConfiguration>
         </operations>
       </ExecuteBatch>
                <!-- ********************************** -->
                <!--         Logical fields             -->
                <!-- ********************************** -->
      <AddLogicalFields>
        <logicalFields>
            <LogicalField>
                <id>1</id>
                <name>CustomerRegion</name>
                <type>java.lang.String</type>
            </LogicalField>
            <LogicalField>
                <id>2</id>
                <name>HouseholdID</name>
                <type>java.lang.Long</type>
            </LogicalField>
            <LogicalField>
                <id>3</id>
                <name>IndividualID</name>
                <type>java.lang.Long</type>
            </LogicalField>
            </logicalFields>
       </AddLogicalFields>
                <!-- ********************************** -->
                <!--    Territory field constraints     -->
                <!-- ********************************** -->
      <AddDataFilters>
        <dataFilters>
          <DataFilter>
            <configId>1</configId>
            <id>1</id>
            <fieldConstraints>
              <FieldConstraint>
                <logicalFieldId>1</logicalFieldId>
                <expression>Africa</expression>
              </FieldConstraint>
            </fieldConstraints>
          </DataFilter>
          <DataFilter>
            <configId>1</configId>
            <id>2</id>
            <fieldConstraints>
              <FieldConstraint>
                <logicalFieldId>1</logicalFieldId>
                <expression>Asia</expression>
              </FieldConstraint>
            </fieldConstraints>
          </DataFilter>
          <DataFilter>
            <configId>1</configId>
            <id>3</id>
            <fieldConstraints>
              <FieldConstraint>
                <logicalFieldId>1</logicalFieldId>
                <expression>Europe</expression>
              </FieldConstraint>
            </fieldConstraints>
          </DataFilter>
          <DataFilter>
            <configId>1</configId>
            <id>4</id>
            <fieldConstraints>
              <FieldConstraint>
                <logicalFieldId>1</logicalFieldId>
                <expression>Middle East</expression>
              </FieldConstraint>
            </fieldConstraints>
          </DataFilter>
          <DataFilter>
            <configId>1</configId>
            <id>5</id>
            <fieldConstraints>
              <FieldConstraint>
                <logicalFieldId>1</logicalFieldId>
                <expression>North America</expression>
              </FieldConstraint>
            </fieldConstraints>
          </DataFilter>
        </dataFilters>
      </AddDataFilters>
                <!-- ********************************** -->
                <!--   Map physical to logical fields   -->
                <!-- ********************************** -->
      <ExecuteBatch>
        <name>addTables</name>
        <operations>
          <AddDataTable>
            <dataTable>
            <id>1</id>
            <name>Territory</name>
            <fields>
              <TableField>
                <name>cust_region</name>
                <logicalFieldId>1</logicalFieldId>
              </TableField>
              <TableField>
                <name>hh_id</name>
                <logicalFieldId>2</logicalFieldId>
              </TableField>
              <TableField>
                <name>indiv_id</name>
                <logicalFieldId>3</logicalFieldId>
              </TableField>
            </fields>
            </dataTable>
          </AddDataTable>
        </operations>
      </ExecuteBatch>
                <!-- ********************************************************* -->
                <!--              Audience table associations                  -->
                <!-- ********************************************************* -->
       <ExecuteBatch>
              <name>addAudiences</name>
              <operations>
              <AddAudience>
                <audience>
                <id>1</id>
                <name>household</name>
                <fields>
                  <AudienceField>
                    <logicalFieldId>2</logicalFieldId>
                    <fieldOrder>0</fieldOrder>
                  </AudienceField>
                </fields>
              </audience>
            </AddAudience>
            <AddAudience>
                <audience>
                <id>2</id>
                <name>individual</name>
                <fields>
                  <AudienceField>
                    <logicalFieldId>3</logicalFieldId>
                    <fieldOrder>0</fieldOrder>
                  </AudienceField>
                </fields>
                </audience>
              </AddAudience>
              </operations>
       </ExecuteBatch>
                <!-- ******************************************************* -->
                <!--            Associate table-audience pairs               -->
                <!--               with data configuration                   -->
                <!-- ******************************************************* -->
       <ExecuteBatch>
             <name>addAudienceTableAssociations</name>
             <operations>
             <AddAudienceTableAssociation>
                 <audienceTableAssociation>
                   <audienceId>1</audienceId>
                   <tableId>1</tableId>
                   <configId>1</configId>
               </audienceTableAssociation>
             </AddAudienceTableAssociation>
             <AddAudienceTableAssociation>
                 <audienceTableAssociation>
                   <audienceId>2</audienceId>
                   <tableId>1</tableId>
                   <configId>1</configId>
                 </audienceTableAssociation>
             </AddAudienceTableAssociation>
             </operations>
       </ExecuteBatch>
    </operations>
</ExecuteBatch>

Populating the system tables

Jim has named his data filter XML file regionDataFilters.xml and saved it in the tools/bin directory under his Unica Platform installation. He opens a command prompt and uses the datafilteringScriptTool utility to populate the data filter system tables.

Assigning users and groups to the data filters

Finally, Jim logs in to Unica with an account that has Admin access in Unica Platform.

He knows that groups have already been set up in Unica with users assigned by region.

He goes to the Data Filter section and sees that the field constraints from his data filters are available in the advanced search for data filters. He performs a search for a data filter, using Africa as a search criterion. The data filter he set up for the Africa region appears in the search results.

Next, Jim performs a search for the Africa user group, which has been set up in Unica to hold all field marketers who are responsible for marketing to customers in Africa. The Africa group appears in the search results.

Jim then selects the group and the data filter in the search results, and assigns the group to the data filter by clicking the Assign button.

He continues to perform searches for data filters and groups until all assignments are completed.