Property Analysis & Query Console

Purpose

The Property Analysis module equips BIM managers, lead information managers, and digital twin engineers with deep diagnostic tools. While rule templates automate statutory checks, custom project requirements often require ad-hoc queries, aspect verification, and statistical distributions across millions of model properties.

The module provides an interactive ECSQL query workbench with query validation, syntax safety guards, dynamic result tables, and instant CSV/JSON exports.


The ECSQL Query Console

The query console communicates directly with the live Bentley iModel repository over high-performance RPC endpoints.

User ECSQL Query

Client-Side Safety Parser (SELECT-Only)

Bentley iTwin Hub (Live Changeset)

Paginated Results Grid

Distribution Charts

CSV / JSON Export

ECSQL Best Practices in BIM Checker

  1. Unquoted ECInstanceId Literals: In ECSQL, ECInstanceId and foreign navigation IDs are 64-bit integer values. Always write unquoted hex literals:

    -- Correct:
    WHERE ECInstanceId = 0x200000010f2
    -- Incorrect (fails to match):
    WHERE ECInstanceId = '0x200000010f2'
    
  2. Schema.Class Dot Delimiters: Always pass 's.c' into ec_className to obtain standard schema dot notation:

    SELECT ECInstanceId, ec_className(ECClassId, 's.c') AS ClassName, UserLabel FROM bis.Element
    
  3. Avoid SELECT *: Specify exact columns to avoid transferring heavy 3D geometry blobs over the network.


Common Analytical Queries

1. Inspecting Door Dimensions & IFC Types

SELECT
  d.ECInstanceId,
  d.UserLabel,
  d.OverallWidth,
  d.OverallHeight,
  ec_className(d.ECClassId, 's.c') AS ClassName
FROM
  bis.GeometricElement3d d
WHERE
  ec_className(d.ECClassId, 's.c') LIKE '%Door%'
  OR d.UserLabel LIKE '%Door%'

2. Auditing Floor Levels & Elevations

SELECT
  s.ECInstanceId,
  s.UserLabel AS StoreyName,
  s.Elevation
FROM
  bis.BuildingStorey s
ORDER BY
  s.Elevation ASC

3. Checking Published BIM Checker Dynamic Aspects

SELECT
  aspect.ECInstanceId AS AspectId,
  aspect.Element.Id AS ElementId,
  aspect.AuditStatus,
  aspect.RuleId,
  aspect.DefectReason,
  aspect.LastEvaluated
FROM
  IFCDynamic.Pset_BIMChecker_ExecutionAudit aspect
ORDER BY
  aspect.LastEvaluated DESC

Exporting Analytics