CloudQuery News
Introducing the new Tempo.io source plugin
Tempo.io offers a variety of solutions to aid in business processes planning and management.
Why Tempo.io + CloudQuery? #
The Tempo.io source plugin
allows you to perform advanced data filtering and grouping without relying on restrictive UI filters.
Furthermore, when used in conjunction with other source plugins
(e.g., Jira or BitBucket source plugin)
it allows for cross-referencing the data to gain more insights into the processes and possible blind spots.
With the latest release, the CloudQuery Tempo.io source plugin supports fetching the following resources:
- Accounts into the
tempo_accounts
table - Customers into the
tempo_customers
table - Plans into the
tempo_plans
table - Programs into the
tempo_programs
table - Teams into the
tempo_teams
table- Team Memberships into the
tempo_team_memberships
table
- Work logs into the
tempo_worklogs
table
Use cases #
Let's take a look at a couple of examples to help you get started with the Tempo.io source plugin.
People that are committed to program implementation at the moment #
Sometimes you want to know how many people are committed to implementing a program.
You can do this by the following query:
select programs.id, programs.name, coalesce(sum(memberships.commitment_percent), 0) / 100 as committed_people
from
(select id, name, (jsonb_array_elements(teams -> 'values') -> 'id') ::bigint as team_id from tempo_programs) programs
left join
(select commitment_percent::bigint, team_id from tempo_team_memberships
where (tempo_team_memberships.from is null or tempo_team_memberships.from <= current_date)
and (tempo_team_memberships.inclusive_to is null or tempo_team_memberships.inclusive_to >= current_date)
) memberships
on programs.team_id = memberships.team_id
group by programs.id, programs.name
order by committed_people desc;
Tasks that required more time than is billable #
Sometimes the task at hand requires a lot of time, and the billable time may diverge from the time spent.
The following query helps to identify what issues have mismatched logged billable time and time spent.
select issue ->> 'id' as issue_id,
sum(billable_seconds) as billable_seconds,
sum(time_spent_seconds) as time_spent_seconds
from tempo_worklogs
where billable_seconds != time_spent_seconds
group by issue_id
order by time_spent_seconds desc, billable_seconds desc;
Getting Started #
To get started syncing Tempo.io data, see the Tempo.io source plugin documentation for instructions.
Incremental data #
To prevent repeated syncing of the same data CloudQuery supports incremental tables.
We designed
tempo_plans
and tempo_worklogs
tables to be incremental, so that only the updated and new entries are fetched.To take advantage of this feature be sure to add the
backend_options
field to your sync spec.For example, to sync from Tempo.io to PostgreSQL you could use the following configuration (remember to update the versions and add your own credentials):
kind: source
spec:
name: tempo-io
path: cloudquery/tempo-io
registry: cloudquery
version: 'v1.x.x'
tables:
- '*'
destinations: ['postgresql']
backend_options:
table_name: 'cq_state_tempo_io'
connection: '@@plugins.postgresql.connection'
spec:
api_key: '${TEMPO_IO_API_KEY}'
---
kind: destination
spec:
name: postgresql
path: cloudquery/postgresql
registry: cloudquery
version: 'v8.x.x'
spec:
connection_string: '${POSTGRES_DSN}'
Ready to get started with CloudQuery? You can try out CloudQuery locally with our quick start guide or explore the CloudQuery Platform (currently in beta) for a more scalable solution.
Got feedback or suggestions? Join the CloudQuery community to connect with other users and experts, or message our team directly here if you have any questions.
Written by Aleksandr Shcherbakov
Alex is a senior software engineer at CloudQuery who specialises in application development and cloud data infrastructure.