Hello Adrien,

I've got several reports that bring together multiple tables and aggregate 
repeatable fields (such as Extent) using SQL. My SQL is not very pretty, but it 
might be helpful for you.

Below is the SQL I use to generate a list of Accession records with aggregated 
Extents and Agents and another that looks at whether any Archival Objects are 
unpublished (an archivist wanted to know whether it was OK to click the 
"Publish All" button for any particular Resource).

I also have a couple of shelf lists that might be useful (they pull in Instance 
information), as well.

SELECT T0.id AS 'ID',
 T1.repo_code AS 'Repository',
 T0.title AS 'Title',
  
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(T0.identifier,'","','-'),'[',''),']',''),'null',''),'"',''),',','')
 AS 'Identifier',
 T0.accession_date AS 'Accession Date',
GROUP_CONCAT(DISTINCT CONCAT(T2.number, ' ', T3.value) ORDER BY 
CONCAT(T2.number, ' ', T3.value) DESC SEPARATOR ', ') AS 'Extent',
GROUP_CONCAT(DISTINCT T2.container_summary ORDER BY T2.container_summary DESC 
SEPARATOR '; ') AS 'Container Summary',
     GROUP_CONCAT(DISTINCT T2.dimensions ORDER BY T2.dimensions DESC SEPARATOR 
'; ') AS 'Dimensions',
     GROUP_CONCAT(DISTINCT T5.sort_name ORDER BY T5.sort_name DESC SEPARATOR '; 
') AS 'Person',
     GROUP_CONCAT(DISTINCT T7.sort_name ORDER BY T7.sort_name DESC SEPARATOR '; 
') AS 'Corporate Body',
GROUP_CONCAT(DISTINCT T8.sort_name ORDER BY T8.sort_name DESC SEPARATOR ', ') 
AS 'Family',
     GROUP_CONCAT(T6.value SEPARATOR ', ') AS 'Agent Role',
     T0.suppressed AS 'accessionSuppressed',
     T0.publish AS 'Published?',
     T0.created_by AS 'Created by',
     T0.last_modified_by AS 'Modified by',
     CONVERT_TZ(T0.create_time, '+00:00', '-5:00') AS 'Creation time',
CONVERT_TZ(T0.system_mtime, '+00:00', '-5:00') AS 'Modification time'
 FROM archivesspace.accession T0
 LEFT JOIN archivesspace. linked_agents_rlshp T4
 ON T4.accession_id = T0.id
 LEFT JOIN archivesspace.name_person T5
     ON T4.agent_person_id=T5.agent_person_id AND T5.authorized = '1'
     LEFT JOIN archivesspace.enumeration_value T6
     ON T4.role_id=T6.id
     LEFT JOIN archivesspace.name_corporate_entity T7
     ON T4.agent_corporate_entity_id=T7.agent_corporate_entity_id AND 
T7.authorized = '1'
     LEFT JOIN archivesspace.name_family T8
     ON T4.agent_family_id=T8.agent_family_id AND T8.authorized='1'
     LEFT JOIN archivesspace.repository T1
     ON T0.repo_id=T1.id
     LEFT JOIN archivesspace.extent T2
     ON T0.id=T2.accession_id
     LEFT JOIN  enumeration_value T3
     ON T2.extent_type_id=T3.id
     GROUP BY T0.ID
     ORDER BY T0.create_time DESC

This SQL prompts for a Resource ID (WHERE T8.root_record_id=?) and lists all of 
the  attached Archival Objects, sorted by their Publish value. It's not what 
you want, but it illustrates connecting a Resource to Archival Objects and Top 
Container information.

SELECT
    CONCAT(T9.value, " ", T6.indicator) AS `Container`,
    T8.component_id AS `Level`,
    T8.display_string AS `Component Title`,
     T8.publish AS `Publish?`
     FROM archivesspace.archival_object T8
     LEFT OUTER JOIN archivesspace.instance T1
     ON T1.archival_object_id=T8.id
     LEFT JOIN archivesspace.sub_container T2
     ON T1.id = T2.instance_id
     LEFT JOIN archivesspace.top_container_link_rlshp T3
     ON T2.id = T3.sub_container_id
     LEFT OUTER JOIN archivesspace.top_container T6
     ON T3.top_container_id = T6.id
     LEFT JOIN archivesspace.top_container_housed_at_rlshp T4
     ON T4.top_container_id = T6.id
     LEFT JOIN archivesspace.location T5
     ON T4.location_id = T5.id
     LEFT JOIN archivesspace.enumeration_value T9
     ON T6.type_id=T9.id
     WHERE T8.root_record_id=?
     ORDER by T8.publish, T9.value, T8.component_id ASC



Karen

Karen D. Miller
Monographic Cataloger/Metadata Specialist
Northwestern University Libraries
Northwestern University
1970 Campus Drive
Evanston, IL 60208
www.library.northwestern.edu
k-mill...@northwestern.edu
874.467.3462

From: archivesspace_users_group-boun...@lyralists.lyrasis.org 
<archivesspace_users_group-boun...@lyralists.lyrasis.org> On Behalf Of Hilton, 
Adrien
Sent: Monday, November 09, 2020 1:24 PM
To: Archivesspace Users Group <archivesspace_users_group@lyralists.lyrasis.org>
Subject: [Archivesspace_Users_Group] Developing custom reports

Dear Colleagues,

We are considering creating three reports that are essentially data dumps of 
various record types in a repository, e.g. all resource record level data; all 
accession record level data; and all archival object level data associated with 
a single resource record. You can see our use cases and specifications here:

Resource record level data: 
https://docs.google.com/document/d/1ndDKXuE27rKdfOycPjCODq6UVOKGlqY4ns3x_S4aFcM/edit?usp=sharing<https://urldefense.com/v3/__https:/docs.google.com/document/d/1ndDKXuE27rKdfOycPjCODq6UVOKGlqY4ns3x_S4aFcM/edit?usp=sharing__;!!Dq0X2DkFhyF93HkjWTBQKhk!FfIDUyeznz-k708gPKJHR0O0BIN_a66u3BPAaxuCE7ZPf_TL8c0v5nAGVJo8vUNT3vZ2qaD1$>
Accession record level data: 
https://docs.google.com/document/d/1XxddO8KDJdY97q6g9IzLffbnxjP8ei1U9BpErKP3NZA/edit?usp=sharing<https://urldefense.com/v3/__https:/docs.google.com/document/d/1XxddO8KDJdY97q6g9IzLffbnxjP8ei1U9BpErKP3NZA/edit?usp=sharing__;!!Dq0X2DkFhyF93HkjWTBQKhk!FfIDUyeznz-k708gPKJHR0O0BIN_a66u3BPAaxuCE7ZPf_TL8c0v5nAGVJo8vUNT3vRoZgde$>
Archival object data: 
https://docs.google.com/document/d/1D9H31AoPtqmShf14EnrPoNgTimqzOTQa2GtcTcJBn1M/edit?usp=sharing<https://urldefense.com/v3/__https:/docs.google.com/document/d/1D9H31AoPtqmShf14EnrPoNgTimqzOTQa2GtcTcJBn1M/edit?usp=sharing__;!!Dq0X2DkFhyF93HkjWTBQKhk!FfIDUyeznz-k708gPKJHR0O0BIN_a66u3BPAaxuCE7ZPf_TL8c0v5nAGVJo8vUNT3rO84NLj$>

The out-of-the-box reports don't contain all the data we are looking for in 
terms of data analysis, editing, and/or reporting purposes. We know there are 
some challenging areas to accommodate with linked tables and fields that are 
repeatable (e.g. extent) but are hopeful we can manage those. Given our 
particular situation reports are more desirable than say read only access to 
the database, which I know many people would use to get this data.

First question: has anyone already written reports similar to these three?

Second question: is there any interest in collaborating to develop these?

Thanks in advance,
Adrien
_______________________________________________
Archivesspace_Users_Group mailing list
Archivesspace_Users_Group@lyralists.lyrasis.org
http://lyralists.lyrasis.org/mailman/listinfo/archivesspace_users_group

Reply via email to