Tables and columns
A datasource can include up to eight tables. Power BI shows only the ones you ticked when you created the datasource.
How to read the columns
Section titled “How to read the columns”- Column names are the same as in Zendesk’s own API, such as
created_atorassignee_id. - IDs are whole numbers. Columns ending in
_idpoint to a row in another table, marked → below. - Dates and times include the time zone.
- Tags in the main tables come as one text value, separated by commas. To filter or group by tag, use the tag tables instead.
- Every column is always there. If a ticket has no value, the cell is empty.
Tickets
Section titled “Tickets”One row per ticket that matches the datasource’s ticket filter.
Key: id.
| Column | Type | Notes |
|---|---|---|
id |
Int64 | Ticket number |
subject, raw_subject, description |
Text | |
status, priority, type |
Text | |
custom_status_id |
Int64 | |
requester_id, submitter_id, assignee_id |
Int64 | → Users.id |
organization_id |
Int64 | → Organizations.id |
group_id |
Int64 | → Groups.id |
brand_id, ticket_form_id, problem_id, forum_topic_id |
Int64 | |
external_id, recipient, url |
Text | |
is_public, has_incidents, from_messaging_channel |
True/false | |
satisfaction_score, satisfaction_comment |
Text | unoffered means no survey was sent |
via_channel |
Text | The channel the ticket came in through |
tags |
Text | Comma-separated |
due_at, created_at, updated_at |
Date-time | |
| one column per custom field | Varies | See Custom fields |
Ticket metrics
Section titled “Ticket metrics”Timings for each ticket that matches the filter. Key: ticket_id, one row per ticket.
Tickets that Zendesk has no metrics for get no row.
| Column | Type |
|---|---|
ticket_id |
Int64, → Tickets.id |
metric_set_id |
Int64 |
group_stations, assignee_stations, reopens, replies |
Int32 |
assigned_at, initially_assigned_at, solved_at, assignee_updated_at, requester_updated_at, status_updated_at, latest_comment_added_at |
Date-time |
reply_time_…, first_resolution_time_…, full_resolution_time_…, agent_wait_time_…, requester_wait_time_…, on_hold_time_… |
Int64, minutes |
created_at, updated_at |
Date-time |
Each duration comes twice: _calendar_minutes and _business_minutes. Business
minutes stay empty unless your Zendesk account has a business schedule.
Every user in the account. The ticket filter doesn’t apply. Key: id.
id, name, email, role, active, suspended, verified, organization_id
(→ Organizations.id), default_group_id (→ Groups.id), custom_role_id,
external_id, alias, details, notes, phone, time_zone, iana_time_zone,
locale, ticket_restriction, two_factor_auth_enabled, last_login_at, tags,
created_at, updated_at.
role is end-user, agent or admin. Filter on it to split customers from agents.
Organizations
Section titled “Organizations”Every organization in the account. The ticket filter doesn’t apply. Key: id.
id, name, details, notes, external_id, group_id (→ Groups.id),
shared_tickets, shared_comments, domain_names (comma-separated), tags, url,
created_at, updated_at.
Groups
Section titled “Groups”Every agent group in the account. The ticket filter doesn’t apply. Key: id.
id, name, description, is_default, deleted, is_public, url, created_at,
updated_at.
Tag tables
Section titled “Tag tables”One row per object and tag, so tags can be used as a slicer or an axis. Each table has two columns, and together they form the key.
| Table | Columns | Ticket filter applies? |
|---|---|---|
| Ticket tags | ticket_id (→ Tickets.id), tag |
Yes |
| User tags | user_id (→ Users.id), tag |
No |
| Organization tags | organization_id (→ Organizations.id), tag |
No |
Linking the tables in Power BI
Section titled “Linking the tables in Power BI”Power BI usually doesn’t link these tables on its own, because the column names differ
(requester_id in one table, id in the other). Add the links yourself in Model
view, by dragging one column onto the other:
| From | To | Cardinality |
|---|---|---|
Ticket metrics[ticket_id] |
Tickets[id] |
One to one |
Ticket tags[ticket_id] |
Tickets[id] |
Many to one |
Tickets[requester_id] |
Users[id] |
Many to one |
Tickets[organization_id] |
Organizations[id] |
Many to one |
Tickets[group_id] |
Groups[id] |
Many to one |
User tags[user_id] |
Users[id] |
Many to one |
Organization tags[organization_id] |
Organizations[id] |
Many to one |
A ticket points to three users: requester, submitter and assignee. Power BI allows only
one active link between two tables, so link requester_id to Users, and load
Users a second time as an Agents table for assignee_id. The
report template does exactly that.