dashboards/system_tables/sql/current_assignments.sql (34 lines of code) (raw):
/*
* Copyright 2020 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* It is assumed that the following query will be run in the administration
* project where the reservations were created. If this is not the case,
* prepend the project id to the table name as follows:
* `{project_id}`.`region-{region_name}`.INFORMATION_SCHEMA.{table}
*/
/*
* Reservation Utilization Report: Returns the current reservation
* assignments and associated slot capacities
*/
-- This table retrieves the latest slot capacity for each reservation
WITH
latest_slot_capacity as (
SELECT
rcp.reservation_name, rcp.slot_capacity
FROM
`region-{region_name}`.INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT AS rcp
WHERE
-- This subquery returns the latest slot capacity for each reservation
-- by extracting the reservation with the maximum timestamp
(rcp.reservation_name, rcp.change_timestamp) IN (
SELECT AS STRUCT reservation_name, MAX(change_timestamp)
FROM
`region-{region_name}`.INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT
GROUP BY reservation_name)
)
-- Extract information about current assignments
SELECT
acp.assignment_id,
acp.project_id,
acp.reservation_name,
acp.job_type,
acp.assignee_id,
acp.assignee_type,
lsc.slot_capacity
FROM
`region-{region_name}`.INFORMATION_SCHEMA.ASSIGNMENT_CHANGES_BY_PROJECT AS acp
-- Join to obtain the current slot capacities
LEFT JOIN latest_slot_capacity lsc
ON lsc.reservation_name = acp.reservation_name
GROUP BY
acp.assignment_id,
acp.project_id,
acp.reservation_name,
acp.job_type,
acp.assignee_id,
acp.assignee_type,
lsc.slot_capacity
-- In order to return only active assignments (i.e. ones that have not been
-- deleted) we select only assignments that have one entry in this table.
-- Assignments that have been deleted have two entries in this table,
-- one where the action is CREATE and one where the action is DELETE.
HAVING COUNT(assignment_id) = 1