Circ Snapshot for LDP
The first step in the process is to create the circsnapshot4.sql table in the LDP, which is where data updates will be appended and stored. Run the create_circsnapshot4.sql query to create the circsnapshot4 table in the local_core schema on the LDP. This query (run just once) finds all records in the loans_items table where the user_id is not null, and gets the demographics associated with that user via the user_users table and the users_departmnts_unpacked table. This makes the a starting table that is updated by the update_circsnapshot4 query daily automatically.
CREATE TABLE local_core.circ_snapshot4
AS
SELECT
now() AS extract_date,
li.loan_id,
li.item_id,
li.barcode,
li.loan_date,
li.loan_return_date,
li.patron_group_name,
uu.custom_fields__department,
uu.custom_fields__college,
udu.department_code
FROM folio_reporting.loans_items AS li
LEFT JOIN user_users AS uu
ON li.user_id = uu.id
LEFT JOIN folio_reporting.users_departments_unpacked AS udu
ON li.user_id = udu.user_id
WHERE li.user_id IS NOT NULL
;
The daily_update_circ_demographics task runs daily at 7am. This task runs a query called update_circsnapshot4.sql. The update_circ_snapshot4.sql query (in the LOCAL_AUTOMATED folder in DBeaver) runs the following code on the LDP, which uses the INSERT function to get the new checkouts and add them to the local_core.circsnapshot4 table daily automatically. The local_core.circsnapshot4 table is used in circulation queries to generate reports that need the PII data that is removed everyday from circulation data in the FOLIO system.
Here is the update_circ_snapshot4.sql query:
INSERT INTO local_core.circ_snapshot4
SELECT
now() AS extract_date,
li.loan_id,
li.item_id,
li.barcode,
li.loan_date,
li.loan_return_date,
li.patron_group_name,
uu.custom_fields__department,
uu.custom_fields__college,
udu.department_code
FROM folio_reporting.loans_items AS li
LEFT JOIN user_users AS uu
ON li.user_id = uu.id
LEFT JOIN folio_reporting.users_departments_unpacked AS udu
ON li.user_id = udu.user_id
WHERE
li.loan_id NOT IN
(SELECT cs4.loan_id
FROM local_core.circ_snapshot4 AS cs4
)
AND li.user_id IS NOT NULL
;
Here is a screenshot of the local_core.circsnapshot4 table in the LDP.
Circ Snapshot for Metadb
The circsnapshot for Metadb uses the table that was originally created in LDP to store additional updates to demographics information needed for certain circulation queries. This table was exported from the LDP and imported into the local_core schema in Metadb. In the data import process, column data types were set to match the data types in the equivalent LDP table.
--need to re-import table into local_shared, set permissions so that all users have Read Only permissions to use it, and set data types more accurately using LDP data types as a guide
The daily_update_circ_demographics_metadb task is set up to execute the update_circsnapshot4.sql query daily at 7am. The update_circ_snapshot4_metadb.sql query (in the LOCAL_AUTOMATED folder in DBeaver) runs the following code on Metadb, which uses the INSERT function to get the new checkouts and add them to the sm_local_core.circsnapshot4 table daily automatically. The sm_local_core.circsnapshot4 table is used in circulation queries to generate reports that need the PII data that is removed everyday from circulation data in the FOLIO system.
The metadb version of the query was revised to NOT use derived tables. This will ensure the retrieval of all changes to records when the update query appends new data to the sm_local_core.circsnapshot4 table.
Here is the update_circ_snapshot4_metadb.sql query:
INSERT FINAL VERSION OF QUERY HERE
Here is a screenshot of the local_core.sm_circs_snapshot4 table in Metadb.
ADD INSTRUCTIONS FOR SETTING PERMISSIONS on the sm_local_core.circsnapshot4 table
Set up query to run automatically at these times:
7am
11am
2pm
5pm
9pm