Workplace Analytics Data export
Data export is available only as part of a Microsoft service engagement.
Important
As of February 2022, this product is no longer being supported.
Your company might have unique data-analysis needs requiring custom exploration of Workplace Analytics insights and data that goes beyond what's available in Workplace Analytics. For example, you might have custom data exploration that requires you to combine Workplace Analytics data with data outside of Workplace Analytics.
As part of the service agreement, you can ask your Microsoft representative to enable Data export in the Workplace Analytics app. If you have two or more partitions set up in Workplace Analytics, you can also specify for which partitions to enable Data export in the app. The ability to specify what data can be exported by whom helps you maintain data protection.
After data export is enabled, your Viva Insights or Workplace Analytics can view and use the Data export page in Workplace Analytics to save the SAS URI, which points to an Azure storage container with write-only permission.
Saving the SAS URI enables a workflow that exports the Workplace Analytics data to the storage container. The data will be exported each time it is refreshed in Workplace Analytics, for the agreed duration of the CS agreement.
Data included in the export
You can export pre-processed Workplace Analytics data to a designated Azure storage container as .csv files. The export uses the latest available organizational data that was uploaded and processed in Workplace Analytics.
If you add new organizational data attributes to your Workplace Analytics upload, you must also add them as additional fields in the export in Data export > Field privacy. The new fields are added to the next data export after the data upload is next refreshed and processed in Workplace Analytics. For details, see Subsequent organizational data uploads.
The following .csv files are included in data exports. Select a file to view what's included in that file, such as the data column names, data types, and definitions:
- Meetings
- MeetingParticipants
- PersonHistorical
- MailParticipants
- Mails
- Calls
- CallParticipants
- InstantMessages
- InstantMessageParticipants
Azure environment requirements
Before exporting Workplace Analytics data, confirm the following:
Your company has a current Azure subscription and an Azure storage account with an Azure storage container for storing the exported Workplace Analytics data.
Have a write-only SAS URI for the storage container. To learn more about SAS, see Delegating Access with a Shared Access Signature.
To export data
If you have already installed Azure Templates, use the SAS URI created after deployment which grants write-only access to the raw data folder that was set up during deployment and use that URI in Step 3.
If you have partitions set up in Workplace Analytics, select which partition you want to export data from. If not, skip to the next step.
In Workplace Analytics, go to Controls > Analyst settings > Data export.
In Azure storage container SAS URI, enter the URI for the Azure storage container.
In the Field privacy section, select which fields to export as raw values and as hashed values. Note the options for the required fields at the top of the list are locked and unchangeable, as shown in the following graphic.
Note
When you add new attributes to your organizational data and you want to include them in a data export, you must repeat this step to add the new attributes as additional fields to include in the export.
Select Save (top right) to save your selections and enable a workflow that exports the Workplace Analytics data to the storage container. The applicable data is then exported to Azure during each subsequent data refresh in Workplace Analytics.
Exported .csv files
The .csv files that are listed in this section are included in data exports.
Meetings
This file includes one row for each meeting or appointment with the following metrics. Recurring meetings result in a row for each occurrence.
Column name | Data type | Description |
---|---|---|
MeetingId | string | Unique identifier for each meeting (including recurring meetings); primary key |
ICalUid | string | Meeting calendar ID |
Subject | string | Meeting subject (respects tenant privacy settings; see Workplace Analytics Privacy settings for details) |
IsRecurring | Boolean | True if this is a recurring meeting |
IsCanceled | Boolean | True if the meeting was canceled |
StartTime | datetime | Meeting start time |
DurationMinutes | integer | Meeting length in minutes |
TotalAccept | integer | Total number of meeting acceptances |
TotalDecline | integer | Total number of meeting declines |
TotalNoResponse | integer | Total number of invitees who did not respond to the meeting invite |
TotalTentativelyAccepted | integer | Total number of invitees who tentatively accepted |
TotalAttendees | integer | Sum of total accept, total no-response, plus organizer |
TotalDoubleBooked | integer | Number of attendees who had conflicting meetings or appointments on their calendar |
TotalEmailsDuringMeeting | integer | Number of emails sent during the meeting by all attendees who did not decline the meeting invitation |
MeetingParticipants
This file has one row for each participant in a calendar meeting with the following metrics.
Column name | Data type | Description |
---|---|---|
MeetingId | string | Unique identifier for each meeting (including recurring meetings); foreign key matching Meetings table |
PersonHistoricalId | string | Unique value for a participant any time an HR attribute changes; foreign key matching PersonHistorical table |
LocalStartTime | datetime | Start time of the meeting in the participant's local time |
IsOrganizer | Boolean | True if this participant organized the meeting |
IsDoubleBooked | Boolean | True if this person has more than one meeting at this time in their calendar |
Response | enumerated | Invitee's response to the meeting: declined, tentative, accepted, or no response |
DurationMinutesAdjusted | double | Time spent in meeting, adjusted if double booked |
NumberOfEmailsDuringMeeting | integer | The number of emails sent by this participant in this meeting |
PersonHistorical
This file includes one row for each person that has HR attribute changes and for each HR change with the following metrics. A new row is created when a person's HR attributes change.
Column name | Data type | Description |
---|---|---|
PersonHistoricalId | string | Unique value for every person for each HR change; primary key |
EmailAddress | string | Masked value, unique for every email address |
StartDate | datetime | Effective start date of last HR change (does not apply for original hire date, or leave date) |
EndDate | datetime | Effective end date of last HR change (does not apply for original hire date, or leave date) |
PopulationType | string | Type of employee. See PopulationType. |
ManagerId | string | Unique value for each person's manager |
HR Attribute 1 | varies | HR values that have been added to the dataset; see HR attributes. |
... | ||
HR Attribute n | varies | HR values that have been added to the dataset; see HR attributes. |
LevelDesignation | string | HR values for employee levels that represent an employee's experience, management level, or seniority within the organization. |
Organization | string | HR values for the internal organization for which employees belong that's specific and identifiable by the organization's leaders. |
IsInternal | Boolean | True if PopulationType is either MeasuredEmployee or InternalCollaborator |
ExternalCollaboratorId | string | Email address if PopulationType is ExternalCollaborator and the tenant is configured to include external email IDs in the report |
PopulationType
The following describes possible values for the PopulationType column.
Value | Description |
---|---|
MeasuredEmployee | An employee who has a Workplace Analytics license assigned |
InternalCollaborator | A person within the company who does not have a Workplace Analytics license assigned |
ExternalCollaborator | A person with a domain that does not match the default company domain |
DistributionList | An Active Directory distribution list |
MeetingRoom | A meeting room |
HR attributes
The HR attributes represent organizational data your company has uploaded for use in Workplace Analytics. The attributes include a required set of attributes, optional attributes, and custom attributes. For more information about these attributes, see Prepare organizational data.
MailParticipants
This file includes one row for every email sent and received with the following metrics.
Column name | Data type | Description |
---|---|---|
MailId | string | Unique identifier for every email sent; foreign key matching primary key of the Mails table |
PersonHistoricalId: | string | Unique identifer for every person; foreign key matching PersonHistorical table primary key |
IsSender | Boolean | True if this person sent the email |
LocalSentTime | datetime | Local time when the email was sent |
PersonTimeSpentInHours | double | Time spent reading or writing email in hours (heuristic estimated value) |
PersonTimeSpentInMinutes | double | Time spent reading or writing email in minutes (heuristic estimated value) |
Mails
This file includes one row for every email sent with the following metrics.
Column name | Data type | Description |
---|---|---|
MailId | string | Unique identifier for each email; primary key |
ConversationId | string | Unique thread identifier |
Subject | string | Meeting subject (respects tenant privacy settings; see Workplace Analytics Privacy settings for details) |
SentTime | datetime | When the email was sent, in the sender's local time |
SenderTimeSpentinMinutes | double | How many minutes spent writing the email (heuristic estimated value) |
NumberOfRecipients | integer | Number of email recipients, not including the sender |
Calls
This file includes one row for each call with the following metrics. Recurring, scheduled calls (also referred to as meetings) result in a row for each occurrence.
Column name | Data type | Description |
---|---|---|
CallRecordId | string | Unique identifier for each call (including scheduled calls); primary key |
MeetingId | string | Meeting calendar ID (iCalUID + StartDate) associated metadata found on the mapped MeetingId (if a scheduled call/meeting) |
AppName | string | Name of the source app (for example: Teams, Skype) |
IsScheduledCall | Boolean | True if this is a scheduled call |
TotalParticipants | integer | Sum of total participants for the call |
InteractionType | enumerated | Invitee's response to the call: joined or attended, tentative, accepted, or no response |
CallParticipants
This file includes one row for each participant in a call with the following metrics.
Column name | Data type | Description |
---|---|---|
CallRecordId | string | Unique identifier for each call (including scheduled calls); primary key |
PersonHistoricalId | string | Unique value for a participant any time an HR attribute changes; foreign key matching PersonHistorical table |
IsOrganizer | Boolean | True if this participant organized the call |
LocalStartTime | datetime | Start time of the call in the participant's local time |
LocalEndTime | datetime | End time of the call in the participant's local time |
InstantMessages
This file includes one row for each instant message with the following metrics.
Column name | Data type | Description |
---|---|---|
InstantMessageId | string | Unique identifier for each instant message; foreign key matching InstantMessage table |
AppName | string | Name of the source app (for example: Teams, Skype) |
SentTime | datetime | Sent time of the instant message in the participant's local time |
InteractionType | enumerated | The type of instant message received by a person: GroupChat, OneOnOneChat |
TotalParticipants | double | Sum of total IM participants (includes sender) |
InstantMessageParticipants
This file includes one row for each participant in an instant message with the following metrics.
Column name | Data type | Description |
---|---|---|
InstantMessageId | string | Unique identifier for each instant message; foreign key matching InstantMessage table |
PersonHistoricalId | string | Unique value for a participant any time an HR attribute changes; foreign key matching PersonHistorical table |
isAfterHours | Boolean | True if this instant message was sent after hours |
IsSender | Boolean | True if this person was the instant message sender |
LocalSentTime | datetime | Sent time of the instant message in the participant's local time |
SenderTimeSpentInMinutes | double | Time spent in instant message, approximation |