The CLAIMS Direct data warehouse is updated continuously. On average, 1-3% of the entire database is touched weekly. These 1-3 million updates fall into two categories: new documents (roughly 20%) and updated documents (roughly 80%). New documents are, of course, new publications from issuing authorities, US, EP etc. Updates are generally, but not limited to, CPC changes, family changes (adding family ID), IFI integrated content Snapshots (patent status, standard names and claims summaries), reassignments, legal status, et al. I suggest reading about content updates for a better understanding of load sources and issuing authorities. This blog will describe how to determine what has been updated and further, differentiating new content from updated content at the document level as well as container level.
Load Identifiers
As described in the content update documentation,
...
modified_load_id
– theload-id
that last modified the document, whether it be addition, correction or deletion of contentdeleted_load_id
– theload-id
that the entire document was marked deletedcreated_load_id
– theload-id
when the document was added to the data warehouse
Each satellite table also contains a modified_load_id
column that is specific to the content in that table and will always be <= xml.t_patent_document_values(modified_load_id)
. The following table should clarify the sequence of update events and the effect on load-id
values for three database tables.
date | load-source | Load-Id | table | created_load_id | modified_load_id | deleted_load_id |
---|---|---|---|---|---|---|
20161004 | US | 10000 | xml.t_patent_document_values | 10000 | 10000 | NULL |
xml.t_ifi_integrated_content assuming ifi integrated content is not delivered on date of publication | n/a | n/a | n/a |
xml.t_parties | n/a | 10000 | n/a | |||
20161006 | IFI-CONT | 10001 | xml.t_patent_document_values | 10000 | 10001 | NULL |
xml.t_ifi_integrated_content | n/a | 10001 | n/a |
xml.t_parties parties are not updated with IFI content loads | n/a | 10000 | n/a | |||
20161011 | DOCDB | 10002 | xml.t_patent_document_values | 10000 | 10002 | NULL |
xml.t_ifi_integrated_content | n/a | 10001 | n/a |
xml.t_parties | n/a | 10002 | n/a |
This granularity offers the ability to trace modifications to individual containers (tables) as well as the overall modification status of the document as a whole.
Info | |||||
---|---|---|---|---|---|
| |||||
How many US documents published on 20161004 have updated CPC classifications?
Out of 6680 documents published on 20161004, 6145 had CPC modifications after publication. |
Reporting
Knowing which tables and containers have changed is important, but the when and why are also critically important. The information gathered during data warehouse updates is stored in reporting.t_client_load_process
. For a detailed description of the contents of this table, see CLAIMS Direct Design Documentation. Of the many questions that can be posed, for our purposes in this blog, we are only concerned with answering the following questions:
...
The answers to these questions are important for a variety of reasons, most importantly for down-stream processing. In the case of CLAIMS Direct primary data warehouses, we trigger indexing based on the answer to these questions. The first thing to look at is what happened on a certain date, for the sake of an example, we will use 20161004.
Code Block | ||
---|---|---|
| ||
select load_source, count(*) from reporting.t_client_load_process where date_trunc('day', completed_stamp) = '2016-10-04'::date group by load_source order by load_source; load_source | count --------------+------- DOCDB | 7 IFI-CLAIMINF | 1 IFI-Cont | 15 IPCR | 47 US | 1 USPTO-OG | 1 USREAS | 1 |
How many documents were added to the data warehouse?
Code Block | ||
---|---|---|
| ||
select count(*) as new_docs from xml.t_patent_document_values where created_load_id in ( select load_id from reporting.t_client_load_process where date_trunc('day', completed_stamp) = '2016-10-04'::date ); new_docs ---------- 6680 |
... and which documents were updated?
Code Block | ||
---|---|---|
| ||
select count(*) as updated_docs from xml.t_patent_document_values where created_load_id < modified_load_id and modified_load_id in ( select load_id from reporting.t_client_load_process where date_trunc('day', completed_stamp) = '2016-10-04'::date ); updated_docs ---------- 362388 |
...