Initial Release
iris-table-stats is an InterSystems IRIS backend module for exploring persistent classes and measuring how well their fields are populated.
It is intended for data quality and data knowledge use cases:
The module exposes a REST API under /iris-table-stats/api.
After installation, the backend exposes endpoints such as:
GET /iris-table-stats/api/classesGET /iris-table-stats/api/classes/{className}/dataGET /iris-table-stats/api/classes/{className}/statsGET /iris-table-stats/api/classes/{className}/empty-records?columnName=...GET /iris-table-stats/api/_specThe /stats endpoint is especially useful to understand how complete a table is. For each property of a persistent class, it reports:
This project is useful when you want to answer questions like:
That makes it a good fit for demo environments, imported datasets, discovery projects, and data-quality reviews.
If your target IRIS does not yet have IPM/ZPM installed, install it first.
Then open an IRIS terminal in the target namespace and install the backend package.
Example:
USER>zpm
USER:zpm>install esh-iris-table-stats
## Recommended Frontend
Recommended UI:
iris-class-explorer
- GitHub:
https://github.com/evshvarov/iris-class-explorer
The frontend is intended to work together with this backend and provides a class explorer UI on top of the API.
Install the frontend package with IPM as well:
USER>zpm
USER:zpm>install iris-table-stats-frontend
</code></pre>
<h2>Related Dataset Packages</h2>
<p>You may find useful the following several demo or sample datasets.</p>
<p>Recommended companion packages:</p>
<ul>
<li><code>iris-dataset-countries</code>
<ul>
<li>Open Exchange: <code>https://openexchange.intersystems.com/package/iris-dataset-countries</code></li>
</ul>
</li>
<li><code>Health-Dataset</code>
<ul>
<li>Open Exchange: <code>https://openexchange.intersystems.com/package/Health-Dataset</code></li>
<li>Author: Jury</li>
</ul>
</li>
</ul>
<p>These packages give you realistic persistent classes to inspect through this API and make the population stats endpoints much more meaningful.</p>
<p>Example UI screenshots:</p>
<p>Data view:</p>
<p><img src="https://github.com/evshvarov/iris-table-stats/raw/master/./docs/images/iris-explorer-data-view.png" alt="IRIS Explorer data view" /></p>
<p>Stats view:</p>
<p><img src="https://github.com/evshvarov/iris-table-stats/raw/master/./docs/images/iris-explorer-stats-view.png" alt="IRIS Explorer stats view" /></p>
<p>A typical setup on a target IRIS looks like this:</p>
<pre><code class="language-cos">USER>zpm
USER:zpm>install esh-iris-table-stats
USER:zpm>install iris-table-stats-frontend
</code></pre>
<p>If you also want sample data:</p>
<pre><code class="language-cos">USER>zpm
USER:zpm>install iris-dataset-countries
</code></pre>
<p>or:</p>
<pre><code class="language-cos">USER>zpm
USER:zpm>install Health-Dataset
</code></pre>
<h2>API Notes</h2>
<p>The backend web application is installed at:</p>
<p><code>/iris-table-stats/api</code></p>
<p>The OpenAPI spec is available at:</p>
<p><code>/iris-table-stats/api/_spec</code></p>
<p>Examples:</p>
<pre><code class="language-text">/iris-table-stats/api/classes
/iris-table-stats/api/classes?includeSystem=0&includeMapped=0
/iris-table-stats/api/classes/Package.Class/data?limit=100&offset=0
/iris-table-stats/api/classes/Package.Class/stats
/iris-table-stats/api/classes/Package.Class/empty-records?columnName=SomeProperty
</code></pre>
<h2>Local Development</h2>
<p>Prerequisites:</p>
<ul>
<li>Docker Desktop</li>
<li>Git</li>
<li>VS Code with the ObjectScript extension if you want an editor workflow</li>
</ul>
<p>Build and run locally:</p>
<pre><code class="language-bash">docker compose build
docker compose up -d
</code></pre>
<p>Open an IRIS terminal:</p>
<pre><code class="language-bash">docker compose exec iris iris session iris -U USER
</code></pre>
<p>Run the module tests:</p>
<pre><code class="language-cos">USER>zpm
USER:zpm>test esh-iris-table-stats
</code></pre>
<h2>Summary</h2>
<p>Use this repository when you need a small IRIS backend that helps you understand how well persistent class data is populated, especially when paired with sample datasets and the <code>iris-table-stats-frontend</code> UI.</p>