Skip to main content

About Custom Reporting

You can build customizable reports that combine asynchronous data - data not updated in real time - from multiple sources in your MaintainX organization. Custom reports can give you deeper insights into related datasets like:

  • Part consumption by asset.
  • Inventory movement.
  • Assets with the most requests (filtered by location).
  • Purchase orders' costs in a given period (filtered by vendor).

You can also share key information with your organization by adding custom reports to custom dashboards or exporting the data to PDF or CSV files.

When working with multiple sources, one source is considered a primary data source, while the others become secondary sources. Combining data sources gives you a better understanding of your data and allows you to make an informed decision for your organization, like which part should be restocked more regularly. For details, see Custom Reporting - Use Cases.

Concepts​

Data Sources​

The first data source you select determines which model is primary. The primary data source defines the context of your report. Adding secondary data sources adds dimension to your report.

This distinction impacts how data is aggregated and joined in your report.

Aggregations​

Aggregations summarize multiple values into a single output to reduce the amount of information displayed in a report. You can use an aggregation like Count, Sum, or Average on your data source fields to refine how your data is presented.

Aggregation TypeDescription
AverageCalculates the mean of all values.

For example, if you have three transactions of 5, 10, and 15 parts, the average will be 10.
Count (All)Counts the number of related values.

If a part is linked to 5 transactions, the reported value is 5.
Count (Unique)Counts the number of distinct values.

If part is used in 3 work orders, 1 time in the first one, 4 times in the second one, and 7 times in the third one, the reported value is 3.
MaximumGives the largest value.
MinimumGives the smallest value.
SummationAdds up numeric values from related data.

Filter Conditions​

Filter conditions determine what makes the selected column in your report match the filter.

ConditionDescriptionNotes
Is one ofFind entities where the filter field matches one or more values that you specify.Use this to include specific entities in the view.
Is emptyFind entities where the filter field has no value at all.
Is not emptyFind entities where the filter field has a value.
ContainsFinds entities that contain the selected value.
Does not containFinds entities that don't contain the selected value.
Is equal toFinds entities that match the selected value.
Is not equal toFinds entities that have a different value than the one selected.
Is aboveFinds entities that have a superior value than the one selected.
Is above or equal toFinds entities that have an equal or superior value than the one selected.
Is belowFinds entities that have an inferior value than the one selected.
Is below or equal toFinds entities that have an equal or inferior value than the one selected.
Is betweenFinds entities that have a value within a specific range.

Custom Reporting - Use Cases​

By combining specific data sources, with the right aggregations and filters, you can build custom reports tailored to your needs.

For example, you could create a report to:

  • Track how critical parts move in and out of your inventory.
  • List requests associated with specific assets.
  • Analyze usage trends on a monthly basis.

Parts Consumption by Assets​

Create a custom report to view your part consumption.

Data SourceColumnsFilters
Part Transactions
  • Asset
  • Part
    Aggregation: Count (All)
  • Work Order
    Aggregation: Count (Unique)
N/A
  • Setting a Count (All) aggregation on the Part column shows the total number of parts that had transactions for each asset (including duplicates).
  • Adding a Count (Unique) aggregation on the Work Order column filters them to individual work orders. Instead of counting a work order twice because it is attached to several parts, it will be counted once.

Example:​

Let's say that:

  • Part P is attached to Asset A.
  • Part P was used 1 time in 1 work order W.
  • Part P was restocked in 1 purchase order PO.
AssetPart - Count (All)Work Order - Count (Unique)
AA1

Parts Inventory​

Create a custom report to get the inventory of all your parts.

Data SourceColumnsFilters
Parts
  • Asset
  • Part
  • Unit Cost
  • Available Quantity
  • Total Cost
Total Cost

Adding a Total Cost filter displays only those parts whose total cost is within a specific range.

Example​

Let's say that:

  • Part P1 has a unit cost of 500$ and 16 available parts in the inventory for a total cost of 8000$.
  • Part P2 has a unit cost of 50$ and 4 available parts in the inventory, for a total cost of 200$.
  • Part P3 has a unit cost of 100$ and 6 available parts in the inventory for a total cost of 600$.

Here is what will appear in your report without the filter:

PartUnit CostAvailable QuantityTotal Cost
P1500$168000$
P250$4200$
P3100$6600$

Here is what will appear in your report with the Total Cost filter set to Is below 1000$:

PartUnit CostAvailable QuantityTotal Cost
P250$4200$
P3100$6600$

Requests by Assets​

Create a custom report to view the number of requests attached to your assets.

Data SourceColumnsFilters
Requests
  • Asset
  • Request
    Aggregation: Count (All)
Status: Pending

Adding a Status filter set to Pending displays only assets with pending requests.

Example​

Let's say that:

  • Asset A is attached to 7 requests and Asset B is attached to 23 requests.
  • Asset A has 2 pending requests.
  • Asset B has 11 pending requests.

Here is what will appear in your report without the filter:

AssetRequest - Count (All)
A7
B23

Here is what will appear in your report with the Status filter set to Pending:

AssetRequest - Count (All)
A2
B11