Create an Event to Analyze Expense Line Item Data

Learn how to create a new event in Visier, including adding properties, loading data, and creating a data version.

Introduction

If you have additional use cases beyond the out-of-the-box content in Visier, you can create new events in the analytic model to accomplish your organization's goals.

In this tutorial, you will learn how to create a new Expense Line Item event, add attributes to the event, create a metric based on the event, load data for the event, and generate a data version to validate the expense line items in employee expense reports. This tutorial is the next step after creating the Expense Report subject in the Create a Subject to Analyze Expense Report Data tutorial. By adding a new event and its attributes to the analytic model, we will extend our analysis options for expense report data in Visier.

If you aren't familiar with Visier's analytic model, take a moment to read Understand Visier's Analytic Model.

Objectives

In this tutorial, we'll walk you through the decision-making process to determine whether the object you want to create is an event, and find out if anything similar already exists in Visier. We will then take you through how to create the event and any attributes and metrics it requires. After the objects are created, we'll walk through loading Expense Line Item data and mapping the data to the new objects in Visier. By the end of this tutorial, you will be able to use the new event you created in analyses and visualizations.

In our example, we will extend the analytic model by creating a net new event.

You will learn how to:

  • Identify whether to create a subject, event, or overlay
  • Identify whether to create properties, dimensions, or concepts
  • Investigate if similar objects already exist in the analytic model
  • Create an event and its attributes
  • Upload new data files using the Visier solution
  • Generate sources to store your data files in Visier
  • Create mappings from your data to the event in Visier
  • Run a job to generate a data version
  • Preview your newly-created event in the solution experience

Prerequisites

  • Loaded Employee data, Expense Report data, and a data version. For more information, see Data In and Data Versions.
  • A Visier tenant. If you don't already have a Visier tenant, try Visier now by signing up for the trial.
  • A Visier account with a profile that has the following capabilities. If you don't have an account, contact your administrator.
    • Model: Write (Access Level), Detailed (View Level)
    • Data: Write (Access Level), Detailed (View Level)
  • A Visier account with a permission that allows the user to access Guidebooks, analyses, the Explore room, and data access to view the data you're using in the solution experience. For more information, see Permission Management.

    • Ad Hoc Analysis
    • Create Analysis Context
    • Change Analysis Context
    • Guidebook
    • View Details

Sample data

Caution: We don't recommend using the sample data in production environments where data is already loaded.

The following sample files are referenced in this tutorial:

Before continuing, make sure you have Expense Report data loaded and published. For more information, see Create a Subject to Analyze Expense Report Data. This tutorial focuses on extending the expense report subject by creating a new event, properties, dimension, and metric.

Steps

Determine your business case

As an organization, you want to have a more granular analysis of employee expense reports in Visier to understand what expenses your employees are claiming. Because your Visier solution already has employee data and expense report data, you can easily bring in expense line item data and connect it to existing data in Visier to address your use case. By building objects to analyze expense line item data, you can independently extend Visier's analytic model to answer your unique business case.

Next, you need to figure out what data you have. For expense line items, we need data for expense report IDs, expense line item IDs, the expense type (such as airfare, hotel, taxi), the date associated with the transaction, the transaction amount, and the currency code for the transaction. If you have the required data, you can move forward with extending Visier's analytic model. If you don't have the required data, you can download expense_line_item_tutorial.csv to complete this tutorial.

Note: The Employee IDs in your expense report data must match the Employee IDs in your previously-loaded employee data.

Decide what to create

Let's say your CEO wants to understand how much money is spent on specific types of expenses every quarter. To adequately analyze expense line items, you'll need the following information in Visier:

  • A container to hold all details about expense line items.
  • Attributes of the expense line item, including the line item's ID, the date the transaction occurred, as well as the total amount of money the employee claimed for the transaction, the currency code for the amount due and approved, and the expense type, such as airfare, hotel, or taxi.

  • A metric that calculates the total value of expense line items during the quarter.

This is the minimum amount of information to bring into Visier so that you can answer your CEO's business question.

Next, ask yourself what kind of container you should design the expense line items as. In Visier, analytic objects (subject, events, and overlays) are containers with attributes. Is Expense Line Item best designed as a subject, an event, or an overlay? To figure that out, review these guidelines.

Create a subject if:

  • The entity has a lifespan and you can analyze changes in its state over time.
  • The entity has events associated with it at different points in time.
  • The entity's state is stable for some period of time.
  • The entity has a history over time.

Create an event if:

  • The data observes transactional behavior that happens to an entity at a particular time instant.

Create an overlay if:

  • The object stores aggregate values for a population. It doesn't store individual members' attribute values.
  • The object contains aggregated data that Visier can compare against metrics and concepts.
  • The object isn't connected to any other analytic objects.
  • The object doesn't require Detailed View access.

Let's say our Expense Line Item data file looks like this:

FiscalPeriod

Transaction_Date

Expense_ReportID

Expense_Line_ItemID

Transaction_Amount

Currency_Code

Expense_Type

202311 2023-11-30 ExpenseReport-11556297 ExpenseLineItem-15131662

42

USD

Taxi

202311 2023-11-18 ExpenseReport-11556297 ExpenseLineItem-15131663

53

USD

Taxi

202312 2023-12-01 ExpenseReport-11556297 ExpenseLineItem-15131664

385

USD

Hotel

202312 2023-12-03 ExpenseReport-11556297 ExpenseLineItem-15131665

80

USD

Fuel

When thinking about expense line items, we can make the following statements:

  • An expense line item doesn't have a lifespan. It happens at a specific point in time and does not change over time.
  • An expense line item doesn't have other events associated with it.
  • An expense line item's state is fixed and does not change.
  • An expense line item doesn't have a history over time. It exists at one point in time.
  • An expense line item observes transactional behavior that happens to an expense report, such as one transaction of $100 on January 21, 2020.
  • An expense line item doesn't store aggregate data. It is directly linked to a specific individual and expense report through the Expense Report ID.
  • An expense line item is connected to other analytic objects in Visier, specifically Expense Report.
  • An expense line item requires Detailed View access.

Based on the above, we should create an event to represent expense line items in Visier. In addition to the event, we also want to create attributes on Expense Line Item so that we can analyze specific data from the data file.

Analytic objects have attributes (properties, dimensions, and concepts) that describe and give meaning to the object. Based on the columns in our data, Expense Line Item is an analytic object that has the following attributes:

  • Transaction Date
  • Expense Report ID
  • Expense Line Item ID
  • Transaction Amount
  • Currency Code
  • Expense Type

Note: Even though the data file contains a column for FiscalPeriod, we won't create a FiscalPeriod attribute. In this data set, we can use the Transaction_Date to represent the date of an expense line item event, so FiscalPeriod isn't necessary.

To decide whether an attribute should be created as a property, dimension, or concept, use these guidelines.

Create a property if:

  • The attribute evaluates the analytic object on a per-ID basis. For example, the Age property evaluates on each employee ID to provide an age for every employee.
  • The attribute won't be used as a group by in visualizations.
  • The attribute can be used in other objects, like metric formulas or dimensions.

Create a dimension if:

  • The attribute groups data. For example, the Age Range dimension groups employees into specific age ranges based on the Age in Months property.
  • The attribute will be used as a filter or group by in visualizations.
  • The attribute can be used in other objects, like concepts or custom dimensions.

Create a concept if:

  • The attribute gets its values from a property or dimension.
  • The attribute will be used as a filter or group by in visualizations.
  • The attribute reclassifies data from other objects into new groups, such as:
    • Selects values that fit into the same group. For example, Millennials is a concept that selects all employees with a Birth_Date property between January 1, 1981 and December 31, 1996.
    • Selects values to represent hierarchical relationships between calculations. For example, Employee Exit Model is a concept that groups exit-related calculations into a hierarchy where Resignation, Retirement, and Other Voluntary exits roll up to calculate Voluntary Turnover.
    • Selects values to represent the processes or sequences that an analytic object goes through. For example, Applicant Process is a concept that groups applicants by the stages of their application, such as Applied, Screen, Interviews Started, Offered, and Background Checked.
    • Selects values to represent movement that an analytic object experiences. For example, Employee Movement is a concept that groups changes to an employee's location or organization as a move in, out, or within a location or organization.

Let's take our list of Expense Line Item attributes and decide what type of object to design them as based on the above guidelines. We can make the following statements about the Expense Line Item attributes:

  • Transaction Date: Evaluates on a per-ID basis to provide a date for each expense line item, not useful as a group by, can be used in other objects, like metric formulas or dimensions, and doesn't reclassify data from other objects into new groups. Mapping the Transaction_Date column from our data determines the x-axis of visualizations that use Expense Line Item metrics. Transaction Date should be designed as a simple property.
  • Expense Report ID: Because Expense Report already exists in Visier, we can connect the Expense Line Item event to the Expense Report subject in the event's settings. The reference takes care of Expense Report ID for us, so we don't have to create it as an attribute on Expense Line Item.
  • Expense Line Item ID: Evaluates on a per-ID basis to provide a value for each expense line item, not useful as a group by, can be used in other objects, like metric formulas or dimensions, and doesn't reclassify data from other objects into new groups. Expense Line Item ID should be designed as a simple property.
  • Transaction Amount: Evaluates on a per-ID basis to provide a value for each expense line item, not useful as a group by, can be used in other objects, like metric formulas or dimensions, and doesn't reclassify data from other objects into new groups. Transaction Amount should be designed as a simple property.
  • Currency Code: Evaluates on a per-ID basis to provide a currency code for each expense line item, not useful as a group by because our sample data is only in one currency (USD), can be used in other objects, like Transaction Amount, and doesn't reclassify data from other objects into new groups. Currency Code should be designed as a simple property.
  • Expense Type: Groups data into specific types, useful as a group by or filter, can be used in other objects, like concepts or custom dimensions. Expense Type should be designed as a leveled dimension.

    Note: After you create a leveled dimension, Visier generates a special property with an automatically-generated display name. This happens so that the property can evaluate on a per-ID basis. In this example, we want to group by Expense Type which is why we'll make it a leveled dimension, but we still need to evaluate each line item's expense type, so Visier generates the Expense Type property automatically. The special property won't be visible in Expense Line Item's list of attributes, but we can add the property to Detailed View. Later in this tutorial, we will map the Expense_Type column from our source data to the Expense_Type_Expense_Type_LevelDim_Prop property (your property may have a different automatically-generated display name) on the Expense Line Item event, which provides data for both the Expense_Type property and dimension.

After all the required objects are created, we can then create a metric to answer our CEO's question: Total Value of Expense Line Items.

Next, we need to determine if Visier has already modeled our business question. The first thing we can do is look at the analytic objects to see if there's an out-of-the-box object that we can load data into that represents what we want to analyze or aggregate data for.

To explore the analytic objects in the studio experience:

  1. On the global navigation bar, click Projects.
  2. Open the Production project.
  3. In the project, click Model > Analytic Objects.
  4. Look through the list of analytic objects and their descriptions to see if there's an object that represents what you want to analyze. In this tutorial, we can start with a keyword search for Expense. We want to find any expense-related objects to find if our objects already exist in the model. By searching Expense, we will find all attributes with "Expense" in the display name.

    Tip: To make your search easier, apply a filter to the Object Type column. You can also take a look at the application definitions to see a complete list of the out-of-the-box content that comes with your purchase. For more information about application definitions, see Download the Application Definition.

  5. In this tutorial, you should see search results for Expense Report, but not Expense Line Item. Expense Line Item doesn't exist in the analytic model yet because we will create it as an event and load data for it in this tutorial. Because Expense Line Item doesn't exist, we can assume that its attributes and related metrics don't exist either. We will create them in this tutorial as well.

Create a project

Next, we need to create a project in the studio experience to hold our work. Projects are how Visier handles version control, allowing you to define and edit the solution separately from the current production version of the solution. For more information, see Projects.

  1. If you are in the Production project, click Back to Projects.
  2. On the global navigation bar, click Projects > New Project.
  3. In the New Project dialog, type a name and description for the project. We can name our project Onboard Expense Line Item with a description of Creating Expense Line Item event and related objects.
  4. Click Create.

    Result: The project home appears.

Create objects

In this section, we will create the following objects:

  • Expense Line Item (event)
  • Expense Line Item ID, Transaction Date, Transaction Amount, Currency Code (simple properties)
  • Expense Type (leveled dimension)
  • Total Value of Expense Line Items (metric)

Note: Because we haven't loaded data yet, we won't be able to preview the objects as we go. We will preview and validate our objects after we load data and create a data version.

Create an event

First, we'll create the event object and then configure its settings. After the event is finished, we can create properties for it.

  1. In the Onboard Expense Line Item project, on the navigation bar, click Model > Analytic Objects.
  2. Click Create Analytic Object.
  3. In Analytic object type, select Event.
  4. In Display name, type Expense Line Item.
  5. In Subject, search for and select Expense Report. If it's not in the list, you might not have published the Onboard Expense Report project to production. Go back and do that now: Publish the project
  6. In Description, type a description for the event. In this tutorial, we'll type Summarizes a line item in an expense report, but you can type any description you want.
  7. When finished, click Create.

    Result: The Expense Line Item event is created. In the Attributes tab, an ID property is generated too. Later in this tutorial, we will use that property for Expense Line Item ID. It comes with an automatically-generated display name, but you can change the display name to Expense Line Item ID.

Now that the event is created, we can configure its settings.

  1. In Settings, define the object's settings, as described next:
    1. Tags: None. This setting is for content categorization, which we won't get into in this tutorial. For more information about tags, see Create and Assign Tags to Content.
    2. Captions: Expense Line Item ID. This is the ID property that was automatically generated after Expense Line Item was created. Setting the caption to Expense Line Item ID lets users filter visualizations to find a specific expense line item during analysis.
    3. Subject: Expense Report. This connects Expense Line Item to Expense Report. You can now add Expense Report properties like Expense Report ID to Detailed View for Expense Line Item.
    4. Ending Event: Is Not Ending. This means that the event doesn't effect whether an expense report is active or inactive.
    5. Default metric: Total Value of Expense Line Items. We haven't created this metric yet, so we'll have to come back later to set this up.
    6. Data category: Use default. In this tutorial, the default is Tenant, which represents the primary data category. If you followed the previous tutorials, the primary data category is Visier Tutorial Data.
    7. End date: Disabled. This means an expense line item inherits its end date from Expense Report.
  2. In References, do nothing. Because Expense Line Item is an event on Expense Report, the event is already connected to Expense Report. Additionally, Expense Report has a subject reference to Employee, so we don't have to worry about referencing Employee in Expense Line Items either. For more information about references, see References.
  3. In Suggested Key Groups, do nothing. This setting is for suggesting selection concepts to users to filter the dataset while analyzing the event in the solution experience, which we won't get into in this tutorial.
  4. In View Details, click Manage Properties. You can select any properties that you want to see in Detailed View. We haven't created the Expense Line Item properties yet, so we'll have to come back later to set this up.
    • After you create the properties, come back to this step and select Expense Line Item ID, Expense Type, Transaction Amount, and Transaction Date. To add Expense Report ID, expand Expense Report and then select Expense Report ID. Additionally, to add Employee ID, expand Expense Report and Employee, then select Employee ID. When finished, click Update. This means users can view data for those properties in Detailed View if they have the correct data access.

      Note: Click Reorder to change the order of the properties. This changes where the property shows up in the Detailed View list. In this tutorial, we reordered the properties to the following order:

      • Expense Report > Employee > Employee ID
      • Expense Report > Expense Report ID
      • Expense Line Item ID
      • Expense Type
      • Transaction Date
      • Transaction Amount
  5. In AI Configuration, do nothing. This setting is for dynamic templates, which we won't get into in this tutorial. For more information about AI configuration and dynamic templates, see Configure AI Attributes.
  6. In Basic Information, change the Object name to Expense_Line_Item.

    Result: The platform updates all references to the new object name and refreshes the page. You may see a dialog asking you to confirm renaming all references to the new object name. Click Ok to update all references and refresh the page.

Create simple properties

Next, we'll create all the simple properties we want to add to Expense Line Item. Earlier, we identified these required properties:

  • Expense Line Item ID
  • Currency Code
  • Transaction Date
  • Transaction Amount

All of the above properties are simple properties. When we first created Expense Line Item, it automatically generated an ID property. Before we create the rest of the properties, let's configure the ID property so that it has the correct display name and data type.

  1. In the Expense Line Item event, in Attributes, click the ID property. In this tutorial, the automatically-generated display name is Expense_ReportID, but you might see a different name.
  2. In Customize, in Data type, select String.
  3. In Basic Information, in Object name, take note of the object name. We will use this object name in the metric formula. In this tutorial, the object name is Expense_Line_ItemID, but yours may be different.
  4. In Basic Information, in Display name, change Expense_ReportID to Expense Line Item ID.
  5. In Basic Information, in Description, type The unique identifier for the expense item.
  6. When finished, return to the Expense Line Item event.

Next, we'll create Currency Code. We have to create Currency Code before we create Transaction Amount because it's currency data that uses the Currency Code property.

  1. In the Expense Line Item event, in Attributes, click Create Attribute > Property.
  2. Select Simple.
  3. In Display name, type Currency Code.
  4. In Object name, type Currency_Code.
  5. In Data type, select Text.
  6. In Description, type The identifier code for the currency that the transaction was made in.
  7. When finished, click Done.
  8. Return to the Expense Line Item event.

The following instructions walk you through how to create multiple simple properties and specifies the data type to select for each property.

Caution: Before continuing, refresh your browser. This makes Currency Code available to select in the Data Type for Transaction Amount.

  1. In the Expense Line Item event, in Attributes, click Create Attribute > Property.
  2. Select Simple.
  3. Type a display name. Use the display names Transaction Date and Transaction Amount.
  4. Type an object name. If left empty, Visier generates an object name. If you have a specific object name convention, you can use it here. At Visier, we use underscores in our object names, so we would use the object names Transaction_Date and Transaction_Amount.
  5. In Data Type, select the following data types for each property:
    • Transaction Date: Date
    • Transaction Amount: Currency
      • Currency code: Currency Code
  6. Type a description. Feel free to write an informative description in your own words for each property.
  7. In Tags, do nothing. We won't add any tags in this tutorial. For more information about tags, see Create and Assign Tags to Content.
  8. When you finish a property, in the New property panel, click Create to create the next property. Repeat steps 2-6 for all properties.

  9. When finished, click Done.

Create a leveled dimension

To analyze expense types, we can create a leveled dimension that has one level called Expense Type. Leveled dimensions organize values into groups defined in your data; in this example, your data file would contain the column Expense Type with values such as Hotel, Airfare, and Taxi.

When the dimension is used as a group by in a visualization, the dimension members (Hotel, Airfare, Taxi, and more) appear on the y-axis to categorize data into defined groups. When the dimension is used as a filter in a visualization, you can select a dimension member to filter the results by; for example, Total Value of Expense Line Items by Organization filtered by Hotel expense type).

  1. In the Expense Line Item event, in Attributes, click Create Attribute > Dimension.
  2. In Dimension type, select Leveled.
  3. Recommended: Turn on Make dimension shared. This allows you to use the dimension with other analytic objects in the future. If you turn off Make dimension shared, the dimension is not shared and you cannot convert it into a shared dimension in the future. For more information about shared dimensions, see Dimensions.
  4. In Display name, type Expense Type.
  5. In Description, type a description for the dimension. In this tutorial, we'll type The expense category, but you can type any description you want.
  6. In Analytic objects, do nothing. Expense Line Item is already selected.
  7. In Tags, do nothing. We won't add any tags in this tutorial. For more information about tags, see Create and Assign Tags to Content.
  8. Click Done.

By default, the leveled dimension has one level in the Customize tab called Expense Type, and its data type is String. In this tutorial, this is the correct level name and data type. If your data uses a different data type for Expense Type, select the level in the Customize tab and, in the Info panel, select a different data type.

Next, let's change the leveled dimension's object name so that it follows our naming convention.

  1. In Expense Type, click Basic Information.
  2. In Object name, replace the automatically-generated object name with Expense_Type.

Now that all the properties and dimensions are created, return to the Expense Line Item event and set the Detailed View properties (step 4 in Create an event above). You may need to refresh the page.

Create a metric

To answer a business question, we can create a metric that calculates specific information. In this example, we want to answer the question of how much money we're spending on expense line items during a selected time period. We will name this metric Total Value of Expense Line Items.

To write a metric formula, we must be familiar with the Visier Formula Language and the structure of a metric formula. Each formula contains:

  • An analytic object. This is the object whose data you're calculating. In this example, we're calculating expense line item data, so the analytic object is Expense_Line_Item.
  • A time handling statement. You can omit the time handing statement if you're using the object's default time handling option. In this example, we're using the default time handling for an event, occurredIn interval, so we'll omit time handling from the formula.
  • A filter. This is an optional attribute to use in the calculation. In this example, we aren't filtering by anything, we'll omit filterBy from the formula.
  • An aggregation function. This is the type of calculation to do and on which property to perform the calculation. In this example, we're performing a sum calculation on the Transaction_Amount simple property.

Metric formulas start with the on function to define the object on which the calculation is performed, so we'll start the formula with on Expense_Line_Item.

Next, we'll skip the time handling function, because we're using the default time handling for an event. We will also skip the filter function because we aren't filtering by anything.

Next, we can specify how to perform the calculation. The function for aggregations is aggregate followed by the aggregation type. In this example, we'll use the aggregation type sum. When a metric is aggregating a specific property, that property follows the aggregation type: aggregate sum(Transaction_Amount).

All together: on Expense_Line_Item aggregate sum(Transaction_Amount)

Tip: If you're unfamiliar with Visier's formula language, you can take a look at metrics in the analytic model to get a sense of how to structure a metric formula. In this tutorial, you could try to find other sum metrics to review their formulas before attempting to write your own.

  1. In Visier, in the studio experience, open a project and navigate to Model > Metrics.
  2. Search for and select Full-Time Equivalents. This metric is a sum of current employees' FTE value.
  3. In Full-Time Equivalents, in the Formula tab, review the formula box, which contains the following formula: on Employee validUntil instant filterBy(isActiveEmployee) aggregate sum(Employee.FTE_Factor).

We can apply this to our example by replacing the values in this formula with the values we specified for Total Value of Expense Line Items: on Expense_Line_Item aggregate sum(Transaction_Amount)

  • We replaced Employee with our event Expense_Line_Item.
  • We removed validUntil instant because our metric is based on an event, not a subject, and is using the default time handling for event-based metrics, so we can omit it from the formula.
  • We removed filterBy(isActiveEmployee) because our metric isn't filtering by anything.
  • We replaced Employee.FTE_Factor with Transaction_Amount because we're summing Transaction Amount. We don't need to specify that it's an Expense_Line_Item property because the metric doesn't use any analytic objects other than Expense Line Item.

Now that we have the metric formula, we're ready to create the metric in Visier.

  1. In the Onboard Expense Line Item project, on the navigation bar, click Model > Metrics.
  2. Click Create Metric.
  3. In the Create metric dialog, type the following:
  4. In Display name, type Total Value of Expense Line Items.
  5. In Description, type a description for the metric. In this tutorial, we'll type The total transaction amount for all expense report line items, but you can type any description you want.
  6. Click Create.

Next, we'll finish setting up the new metric.

  1. In Total Value of Expense Line Items, in the Formula tab, type on Expense_Line_Item aggregate sum(Transaction_Amount) in the formula box.
  2. Click Validate. The formula should be valid. If you receive an error message, review the message and make any necessary changes to the formula or object names for Expense_Line_Item or Transaction_Amount.
  3. Navigate to Settings and do the following:
    1. In Data type, select Currency.
    2. In Analytic object, select Expense Line Item.
    3. In Additive type, select Additive.
    4. Skip the other settings.
  4. Navigate to Basic Information and then change the Object name to Expense_Line_Items_Value.

    Result: The platform updates all references to the new object name and refreshes the page. You may see a dialog asking you to confirm renaming all references to the new object name. Click Ok to update all references and refresh the page.

Now that the metric is created and configured, return to the Expense Line Item event and set the Default metric setting (step 1g in Create an event above).

Commit project changes

Now that we've confirmed that data has been loaded, it's a good time to commit our changes. Committing changes acts as a save point for your project.

  1. In the project, on the navigation bar, click the Home button .
  2. Click the Changes tab in the project home.
  3. Click Commit All.
  4. In the Commit Changes to Project Revision dialog, type a name and description for the project revision. We can name our revision Object Creation with a description of Finished set up of Expense Line Item.
  5. Click Commit now.

Prepare data files

Before we upload our data into Visier, we need to make sure our data files are in the expected format, and follow the recommended file structure and naming conventions. This in an important step as it ensures our files will be successfully uploaded to the solution. To learn more about how to structure your data files, see Data File Guidelines.

Additionally, each data file has specific fields that are required when uploading so we need to ensure we include data for those fields. To learn more about the required and recommended fields for each data file, see Visier Data Dictionaries.

For the purposes of this tutorial, we can skip this step as the sample data files are in the expected format. We are uploading a new file that contains employee expense line item data. Expense Report ID, Expense Line Item ID, and Transaction Date are required fields so we know which expense report to attach the report data to, and when the transaction occurred.

In this tutorial, we are uploading completely new data to a new event. To set up data in Visier, we must upload the data files, create sources in Visier, map the data to Visier objects, and then generate a data version to check our work.

Upload data files in the Visier solution

To upload the expense line item data file in the studio experience:

  1. In the Onboard Expense Report project, on the navigation bar, click Back to Projects.
  2. On the global navigation bar, click Data > Data Transfers.

  3. Click Upload File and select the file on your computer. In this tutorial, we're uploading the expense_line_item_tutorial.csv file. For more information, see Sample data.
  4. Click Upload.

Generate sources

Now that our data file is uploaded to the solution, we need to generate a source for it. Sources store data for your solution, for example, Employee data is stored in the Employee source. For more information, see Sources.

Note: If it's your first time uploading this type of data, the data transfer will fail validation because there is no source connected to it. To resolve this failure, generate a source as described next. If you have previously uploaded this type of data, your data transfer automatically connects to its existing source.

To generate a source for an uploaded file, do the following:

  1. In the Data Transfers tab, hover over the uploaded file. In this tutorial, the file is expense_line_item_tutorial.csv.
  2. In the Actions column, click the Generate source button .

After generating the source, we want to verify the file was loaded correctly.

  1. On the global navigation bar, click Data > Sources.
  2. Select a source and click the Uploaded Files tab. In this tutorial, we will select the expense_line_item_tutorial source.
  3. Check the latest uploaded file and confirm that the number of records is correct in the Records column. There should only be one file as this is the first time we have loaded this data. In this tutorial, we are confirming that expense_line_item_tutorial has 297104 records.

Create mappings

Next, we need to create mappings for the source. Mappings connect the source files' columns to the properties in Visier's analytic objects. For more information, see Mappings.

In this tutorial, we will create a mapping for the expense_report_tutorial source.

To create a mapping:

  1. In the Onboard Expense Line Item project, on the navigation bar, click Data > Mappings.
  2. Click Create Mapping.
  3. In the Create mapping dialog, select the data category that was previously created for your tenant. In this tutorial, we'll select Visier Tutorial Data.
  4. In Mapping type, select the Regular mapping type. We selected Regular because we're uploading primary data to the Expense Line Item event. For more information about mapping types, see Add a Mapping.
  5. In Display name, type Expense Line Item Mapping.
  6. In Description, type a description for the mapping. In this tutorial, we'll type Data extraction rules for expense line item data, but you can write any description you want.
  7. Select the source and its corresponding data load target. We will select expense_line_item_tutorial as the source and Expense_Line_Item as the data load target.
  8. In Data file type, select the Regular event data type for the source. The data type is dependent on how the source data is formatted. In this tutorial, our expense report data is Regular event because the data file is journal-style data types where each record is an occurrence of an event that happened to an expense report. For more information about mapping data types, see Add a Mapping.
  9. In Override behavior, select the Event date and subject member ID override behavior for the mapping. This means that Visier will ignore records in older files if a newer files contains records with the same event date and subject member ID (for example, Transaction_Date: 2019-12-16 and Expense_Line_ItemID: ExpenseLineItem-12344186). We chose this override behavior because it allows us to send a replacement data file for all expense line items if we need to. In this tutorial, we don't have to worry about override behavior because we won't be updating the data in the future. For more information about override behavior types, see Add a Mapping.
  10. In Target group, do nothing. It's an optional field that we don't need in this tutorial. The target group allows us to group mappings together and is important if we are loading records from multiple source systems; for example, if we had data for regular employees in one file and contingent employees in another file. Target groups allow us to load the two sources to the same object without impacting each other. The target group name is not important in this tutorial because our expense report data comes from the same source system.
  11. Select Run automap. This automatically maps your source data to objects in Visier through string matching. In the next step, we'll check that everything is mapped correctly.
  12. Click Create.

Check mappings

After creating the mapping with automapping turned on, we need to validate that the properties are mapped correctly. A property is mapped correctly if it shows the correct source column name or formula. For example, EmployeeID is mapped to the EmployeeID column and not the Birth_Date column.

  1. In Mappings, select Expense Line Item Mapping.
  2. In Properties, check the mapped items to ensure the properties are mapped to the correct source columns. In this tutorial, we need to check the following properties are mapped correctly:
    • Expense_ReportID property is mapped to the Expense_ReportID column.
    • Currency_Code property is mapped to the Currency_Code column.
    • Expense_Line_ItemID property is mapped to the Expense_Line_ItemID column.
    • Expense_Type_Expense_Type_LevelDim_Prop property is mapped to the Expense_Type column. This property isn't mapped automatically, so map it now.
    • Note: This is the automatically-generated property from the Expense Type leveled dimension. You may see a different property name.

    • Transaction_Amount property is mapped to the Transaction_Amount column.
    • Transaction_Date property is mapped to the Transaction_Date column using the formula dateColumn("Transaction_Date").
  3. If a property isn't mapped, map it to the correct column. For more information, see Add a Mapping.
  4. In a property, click Preview to preview the records in the mapping.

    Note: You can ignore unmapped properties that were not included in your data file.

Run a job to generate a data version

Once we've created and configured our mappings, it's time to run a job to generate a new data version, this will allow us to preview the data in the solution. Jobs define the tasks needed to load your data into Visier, for more information, see Jobs.

  1. In the Onboard Expense Line Item project, on the navigation bar, click Data > Data Categories.
  2. On your tenant's data category, in the Actions column, click the More button . In a previous tutorial, we created a data category named Visier Tutorial Data for our employee data. Since we want expense line items included in the same data versions as our employee and expense report data, we will select this data category.
  3. Click Run job.
  4. In the Configure Data Loader dialog, click Run job. In this tutorial, we'll use the default job settings.

To check the status of the job, navigate to Data > Jobs. If successful, a release number appears in the Data Version column. This means a data version is generated and the job is complete.

Set the data version

If the data version release behavior is set to manual release or custom release, you will have to change the data version of your project in order to preview the new data version. If the data version release behavior is set to auto-release latest, the data version is already active in your project.

To set the data version:

  • In a project, on the navigation bar, click Data > Data Categories. For more information, see Set the Data Version.

Commit project changes

Now that we've generated a data version, it's a good time to commit our changes. Committing changes acts as a save point for your project.

  1. In the project, on the navigation bar, click the Home button .
  2. Click the Changes tab in the project home.
  3. Click Commit All.
  4. In the Commit Changes to Project Revision dialog, type a name and description for the project revision. We can name our revision Expense Line Item Data Load with a description of Created mappings and generated data version.
  5. Click Commit now.

Preview and validate in the solution

Note: If you open the solution experience and can't access any analyses or the Explore room, you may not have the correct permission capabilities. For more information, see Permission Management.

Now that we have new data and new objects, let's double check that the data for expense line items is being shown accurately in the solution. This is done by previewing the data in the solution. For this tutorial, we will preview and validate data by building a collection of visualizations in the Analyses room.

Introducing the visual title and analysis context

As part of object creation, we will go through validation steps to confirm that the data is correct by comparing it against the source data. This will involve interacting with visualizations to change the data that is displayed.

Use the various elements to analyze your data and build a visual to suit your needs.


  1. Visual title: Describes and controls the data that is displayed in the chart. Click the Metric picker, Visual picker, and Group By picker in the visual title to change the data that is displayed. For more information, see The Visual Title.
  2. Analysis Context toolbar: Change the Analysis Context to select the population and time period for analysis. For more information, see The Analysis Context.
  3. Chart: Graphical representation of one or more metric.
  4. Side panel: View contextual information about selected metrics and data points, customize the appearance of your chart, and change chart configurations.
  5. Visual Actions menu: Use these quick access buttons to perform chart actions and open chart customization and configuration options in the Side panel. For more information, see Visual Actions Menu.

Create an analysis

  1. In the Onboard Expense Line Item project, on the navigation bar, click Model > Analyses.
  2. Click Create Analysis.
  3. In the Create Analysis dialog, do the following:
  4. In Display Name, type Expense Line Item - Validation.
  5. In Description, type a description for the analysis. In this tutorial, we'll type Validate the Expense Line Item event and related objects, but you can write any description you want.
  6. When finished, click Create.

Next, we can edit the analysis to add visualizations that feature each of our new objects.

  1. To validate simple properties, you must first capture Detailed View. Do the following:
    1. In the Analysis Editor, click the Insert button > Chart > Create new chart.
    2. In the Metric picker, search for and select Total Value of Expense Line Items.
    3. In the Time picker, select December 2023.
    4. In the Info panel , click View details.
    5. With an expense report selected, in the Info panel , click the Capture button .
    6. After capturing, we must return to the Analysis Editor and add a chart again. To close Detailed view, click the Close button , then click Cancel in the New Chart dialog, and then click Cancel in the Add to Analysis dialog.
    7. In the Analysis Editor, click the Insert button > Chart.
    8. Under Select a chart from your captures, select the Detailed View capture, and then click Add.
    9. In the Analysis Editor, click the chart card's title to edit it, and then type Validate Expense Line Item simple properties and click Save.

  2. To add the Expense Type dimension and Total Value of Expense Line Items metric, do the following:
    1. In the Analysis Editor, click the Insert button > Chart > Create new chart.
    2. In Add a title, type Validate Total Value of Expense Line Items metric and Expense Type dimension.
    3. On the Visual title, click the Metric picker.
    4. In the Metric picker, search for and select Total Value of Expense Line Items.
    5. In the Group by picker, search for and select Expense Type.
    6. In the Time picker, select December 2023.
    7. When finished, click Add and Close.

  3. In the Analysis Editor, click Done editing.

Now that we're done creating the analysis, we can preview the analysis to validate that the data is correct.

Preview the analysis

With the analysis finished, we can preview it in the solution to check that everything's working as expected.

  1. In the Onboard Expense Line Item project, on the navigation bar, click Preview Solution.
  2. In the solution experience, on the navigation bar, click Analyses.
  3. Select Expense Line Item - Validation.
Validate Expense Line Item simple properties

Compare the values for an expense line item in the Detailed View capture against your source data. In the sample data, we'll find ExpenseReport-11556294 in Detailed View and compare it against the values in expense_line_item_tutorial.csv.

  • Expense Line Item ID: ExpenseLineItem-15131655
  • Expense Type: Hotel Tax
  • Transaction Date: Dec 5, 2023
  • Transaction Amount: $27.0 USD
Validate Expense Type dimension

In the Validate Total Value of Expense Line Items metric and Expense Type dimension visualization, compare the values for an expense line item in Detailed View against your source data. In this tutorial, we'll select the Hotel group (214K) and then click View details in the Info panel. In Detailed View, find ExpenseReport-11556297 and compare it against the values in expense_line_item_tutorial.csv.

  • Expense Line Item ID: ExpenseLineItem-15131664. In the CSV, you'll see four rows for ExpenseReport-11556297. Look for ExpenseLineItem-15131664 to validate this expense line item.
  • Expense Type: Hotel
  • Transaction Date: December 1, 2023
  • Transaction Amount: $385 USD
Validate Total Value of Expense Line Items metric

Compare the total value of expense line items for December 2023 against your source data. Using the sample data, the Total Value of Expense Line Items is 1,141,206. You can compare this against the source data by filtering the expense_line_item_tutorial CSV by Transaction_Date dates in December 2023 and then summing all the values in the Transaction_Amount column.

Tip: To see an exact value in Visier, in the Info panel in the Insights tab, click the More actions button and turn on High precision.

After we verify the new objects are working as expected, we have successfully extended the analytic model in Visier.

Note: If you don't want to publish the analysis you used for validation, remember to delete it before you publish the project.

Publish the project

Now that you've loaded data and set up the analytic model for expense line items, the next step is to publish your project so your changes are available in production.

  1. In the project, on the navigation bar, click the Home button .
  2. Click the Changes tab in the project home.
  3. Commit any uncommitted changes.
  4. Click Release to Production in the upper-right corner of the project.
  5. In the Release to Production dialog, type a name, description, and release version, and then click Release now. We can name our release Expense Line Items with the description Initial release.

    Result: A new production version of the solution is created.

Next steps

Now you know how to create new analytic objects and load data in the Visier solution. This tutorial walked you through how to figure out what objects to create to answer a specific business question, how to create the objects, and how to write a metric formula using those new objects.

After expanding your Visier solution, you can start building analyses about the new metric and objects, or continue creating more objects to answer other business questions. For more information, see Create an Analysis.