An attribute defines a property of a metadata element or a relationship with another metadata element.
Attributes can be used in the SELECT list. Most of them can be used in the WHERE clause. Some can be used in the ORDER BY clause.
If an attribute name contains any space or is a reserved word, you need to quote it with the double quote (") characters.
MM supports the following attribute types:
-
Profile attribute: for example, Usage, "File last modified", or "Default value". A profile attributes can be qualified by a profile name to prevent any ambiguity, e.g. "RDBMS Relational Database (Database)"."Data Type" or "Data Modeling (Business)"."Data Type". Profile attributes can be used in the WHERE clause.
-
Profile relationship: for example, Tables. A profile relationship can be qualified by a profile name to prevent any ambiguity, e.g. "RDBMS Relational Database (Database)"."External Schemas" or "File System (File)".Fields. Profile relationships cannot be used in the WHERE clause.
-
Custom attribute: for example, "Security level" or "Harvesting PoC". Custom attributes, except those of the BLOB data type, can be used in the WHERE clause.
-
Custom relationship: for example, "Is Defined By", "More General" or References. Custom relationships can be used in the WHERE clause.
-
User defined property (UDP): for example, "2PC Option_1092616415". UDPs can be used in the WHERE clause.
-
System attribute: for example, Name, Context, or "Object Type". Most system attributes can be used in the WHERE clause.
-
Data profiling attribute: for example, "Data Profiling".Min, "Data Profiling"."Distinct", or "Data Profiling"."Inferred Data Types". Data profiling attributes can be used in the WHERE clause.
-
Source history attributes: "Source History"."Popularity Count", "Source History"."Last Data Access Date", "Source History"."Last Data Update Date", and "Source History"."Last Access Users"
Source history attributes can be used in the WHERE clause.
-
Related object property: for example, Parent.Name and Parent. "Object Type". A related object property must be in the form of related object type.property, where the related object type is one of the following system attributes and the property can be a profile attribute, custom attribute, user defined property (UDP), data profiling attribute, or system attribute. If the property is a profile attribute, it can be qualified by a profile name to prevent any ambiguity.
-
Children (deprecated)
-
Parent
Related object properties can be used in the WHERE clause if the property can be used in the WHERE clause.
-
Related object relationship: for example, Parent.Tables. A related object relationship must be in the form of related object type.relationship, where the related object type is one of the following system attributes and the relationship can be a custom relationship, or profile relationship which can be qualified by a profile name to prevent any ambiguity.
-
Children (deprecated)
-
Parent
Related object custom relationships can be used in the WHERE clause.
System Attributes
The following system attributes can be used in the SELECT list, FROM clause and WHERE clause of a MQL Query.
System attribute name | Description | Value examples | Value data type | Supported operators in WHERE | Supported in ORDER BY | Supported in FACET |
---|---|---|---|---|---|---|
"Business Description" (Deprecated) | Business Description. The custom attribute "Definition" replaces and merges "Description" and "Business Description" | A unique number for each customer | String | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS, [NOT] STARTS WITH, [NOT] ENDS WITH, [NOT] CONTAINS | Yes | No |
"Certified By" | The user who certified the object | [{"id": "-1_204","name": "Bob","fullName": "Robert Robertson","type": "User","description": "","email": ""}] | Array of Grantee objects | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS Specify the name(s) of user(s) as filter values. | No | Yes |
Certified | Whether or not the object is certified | true | Boolean | =, !=, [NOT] EXISTS | Yes | No |
Children (Deprecated) | Names of the children | ["EmployeeId", "FirstName", "LastName", "Address"] | Array of String | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS | No | No |
Collections | Collections | ["Hot Reports", "New Tables"] | Array of String | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS | No | No |
"Column Histogram" | Column histogram | [{"count": 1,"lower": "1930-01-01 00:00:00","upper": "1940-01-01 00:00:00"}, {"count": 1,"lower": "1940-01-01 00:00:00","upper": "1950-01-01 00:00:00"}, {"count": 3,"lower": "1950-01-01 00:00:00","upper": "1960-01-01 00:00:00"}, {"count": 4,"lower": "1960-01-01 00:00:00","upper": "1970-01-01 00:00:00"}] | Array of DataProfile_Histogram | [NOT] EXISTS | No | No |
"Column Statistics" | Column statistics | { "DistinctRows": 9,"DuplicateRows": 0,"ValidRows": 9,"EmptyRows": 0,"InvalidRows": 0} | DataProfile_Statistics | [NOT] EXISTS | No | No |
"Comment Count" | Comment count | 2 | Integer | =, !=, = ANY (...), != ANY (...), [NOT] EXISTS, <, <=, >, >= and BETWEEN … AND … | Yes | Yes |
"Commented By" | The users who commented on the object | [{"id": "-1_204","name": "Bob","fullName": "Robert Robertson","type": "User","description": "","email": ""}, {"id": "-1_390","name": "Susan","fullName": "Susan Smith","type": "User","description": "","email": ""}] | Array of Grantee objects | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTSSpecify the name(s) of user(s) as filter values. | No | Yes |
"Conditional Labels" | Conditional labels associated with the object | [{"name": "Endorsed","description": "Endorsed objects"}] | Array of ConditionalLabel objects | =, ANY (...), = ALL (...) | No | No |
Context | Context (or model path) | [{"id": "204_1","objectType": {"name": "Meta Integration (Glossary).Glossary"},"name": "Finance Glossary"}, {"id": "204_2","objectType": {"name": "Meta Integration (Glossary).Category"},"name": "Domains"}] | Array of Entity | [NOT] EXISTS | No | No |
"Created Date" | For Imported Objects: Created date in the source system for some models. (not all bridges will have this information. )For Custom Model Objects: The time the object was created. If an object was restored (from repository backup) it will not have a created date as the history is never backed up and thus not restored. | 2018-09-24 13:25:17 | Date | =, BEFORE, AFTER, BETWEEN ... AND ... , [NOT] EXISTS | Yes | Yes |
"Created By" | The user who created the object. Supported on custom model objects, physical data model objects, semantic mapping objects and data mapping objects. | {"id": "-1_204","name": "Bob","fullName": "Robert Robertson","type": "User","description": "","email": ""} | Grantee | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTSSpecify the name of user as filter value. | Yes | Yes |
"Data Classifications" | Names of the proposed or approved data classes. Run GET /repository/dataClasses/{objectId} to get a list of available data classes | ["Airport Code", "Airport Name"] | Array of String | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS | No | Yes |
"Data Classifications Proposed" | Names of the proposed data classes. Run GET /repository/dataClasses/{objectId} to get a list of available data classes | ["Airport Code", "Airport Name"] | Array of String | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS | No | Yes |
"Data Classifications Approved" | Names of the approved data classes. Run GET /repository/dataClasses/{objectId} to get a list of available data classes | ["Airport Code", "Airport Name"] | Array of String | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS | No | Yes |
"Data Classifications Matched" | Names of the matched data classes. Run GET /repository/dataClasses/{objectId} to get a list of available data classes | ["Airport Code", "Airport Name"] | Array of String | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS | No | Yes |
"Data Classifications Rejected" | Names of the rejected data classes. Run GET /repository/dataClasses/{objectId} to get a list of available data classes | ["Airport Code", "Airport Name"] | Array of String | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS | No | Yes |
"Data Profiling" | Data profiling data | { "totalProfiledRows": 9,"profilingDate": "2020-01-23 23:18:49","statistics": {"distinctRows": 4,...,"maxLength": 24},"inferredDataTypes": {"string": 9},"invalidDataTypeValues": [],"patterns": {"Aaaaa Aaaaaaa": 1,...,"Aaaaa Aaaaaaaaaaaaaa": 6},"values": {"Vice President, Sales": 1,"Sales Representative": 6,"Inside Sales Coordinator": 1,"Sales Manager": 1},"histogram": []} | DataProfile | [NOT] EXISTS | No | No |
"Data Quality Latest Date" | Most recent date the data quality of the object was imported | 2024-03-13 15:36:44 | Date | =, BEFORE, AFTER, BETWEEN ... AND ... , [NOT] EXISTS | Yes | Yes |
"Data Quality Latest Score" | More recent score of the data quality of the object | 90 | Integer | =, !=, = ANY (...), != ANY (...), [NOT] EXISTS, <, <=, >, >= and BETWEEN … AND … | Yes | Yes |
"Data Quality Latest Status" | Most recent status of the data quality of the object | Good | Enumeration: Good, Acceptable, Bad | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS, [NOT] STARTS WITH, [NOT] ENDS WITH, [NOT] CONTAINS | Yes | Yes |
"Data Sampling" | Data sampling data | { "header": ["city", "birthdate"],"samples": [["Seattle", "New York", "San Francisco"],["1970-01-01", "2001-10-20", "1990-10-02"]]} | DataSample | [NOT] EXISTS | No | No |
"Data Select Method" | How the data query should select the rows of the profiled object | Top Rows | Enumeration: Default, Top Rows, Random Rows, Custom | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS, [NOT] STARTS WITH, [NOT] ENDS WITH, [NOT] CONTAINS | Yes | Yes |
"Data Select Query" | Custom SELECT SQL statement to use to retrieve the most relevant data for profiling and sampling rows of this object | String | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS, [NOT] STARTS WITH, [NOT] ENDS WITH, [NOT] CONTAINS | No | No | |
Destination | The destination objects of a complex relationship object | [{"id": "5091_3","name": "Employees","objectType": {"name": "Table","displayName": "Table"}}] | Array of Entity | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS | No | No |
"Destination Model" | The models of the destination objects of a complex relationship object | [{"id": "5090_1","name": "Accounts Payable erwin","objectType": {"name": "DataModel","displayName": "DataModel"}}] | Array of Entity | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS | No | No |
Documentation | The summarized documentation of the object. The summarized documentation returns the first documentation found on the object following the following priority: Business Documentation > Term Documentation > Mapped Documentation > Inferred Documentation > Imported (Documentation) > Searched (Documentation). Warning: Using this attribute may cause bad performance.The original Documentation of glossary terms has been renamed to "Long Description" to not conflict with the new "Documentation" attribute described above. | [{"type": "MAPPED","entity": {"id": "8366_23","name": "Account","objectType": {"name": "Term","displayName": "Term"},"attributes": null}}] | Array of SemanticEntity | [NOT] EXISTS | No | No |
Editors | Editors of worksheets, collections and dashboards | [{"id": "-1_204","name": "Bob","fullName": "Robert Robertson","type": "User","description": "","email": ""}, {"id": "-1_390","name": "Susan","fullName": "Susan Smith","type": "User","description": "","email": ""}] | Array of Grantee objects | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTSSpecify the name(s) of user(s) or group(s) as filter values. | No | Yes |
"Endorsement Count" | Endorsement count | 4 | Integer | =, !=, = ANY (...), != ANY (...), [NOT] EXISTS, <, <=, >, >= and BETWEEN … AND … | Yes | Yes |
"Endorsed By" | The users who endorsed the object | [{"id": "-1_204","name": "Bob","fullName": "Robert Robertson","type": "User","description": "","email": ""}, {"id": "-1_390","name": "Susan","fullName": "Susan Smith","type": "User","description": "","email": ""}] | Array of Grantee objects | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTSSpecify the name(s) of user(s) as filter values. | No | Yes |
"Has Data Impact" | Has Data Impact | true | Boolean | =, !=, [NOT] EXISTS | No | No |
"Has Data Lineage" | Has Data Lineage | true | Boolean | =, !=, [NOT] EXISTS | No | No |
"Has Semantic Definition" | Has Semantic Definition | true | Boolean | =, !=, [NOT] EXISTS | No | No |
"Has Semantic Usage" | Whether or not a term is used. | true | Boolean | =, !=, [NOT] EXISTS | No | No |
"Imported Date" | For Imported Objects: The last time the object was imported (possibly after incremental harvesting), which might be newer than the Updated Date. This date is critical to assess the freshness / accuracy of the Updated Dates, when the import is manual, or on a slow pace weekly / monthly schedule.For Custom Model Objects: Not Applicable | 2023-09-24 13:25:17 | Date | =, BEFORE, AFTER, BETWEEN ... AND ... , [NOT] EXISTS | Yes | Yes |
"Import Bridge" | For Imported Objects: The name of the bridge used to import the object.For Custom Model Objects: Not Applicable | Microsoft Azure Power BI Service (Repository) | String | =, !=, = ANY (...), != ANY (...), [NOT] EXISTS, [NOT] STARTS WITH, [NOT] ENDS WITH, [NOT] CONTAINS | No | No |
"Inferred Documentation" | The list of terms (name and description) indirectly documenting the objects through its pass-through data lineage / impact. Warning: Using this attribute may cause bad performance. | [{"type": "SEARCHED","entity": {"id": "8366_23","name": "Account","objectType": {"name": "Term","displayName": "Term"},"attributes": null}}] | Array of Semantic Entity | [NOT] EXISTS | No | No |
Labels | Labels | ["Jons Tasks", "Obsolete"] | Array of String | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS | No | Yes |
"Last Change Event" | The description of the last change made on the object | Business Name was changed to "NorthwindCustomers" | String | None | No | No |
"Mapped Documentation" | The list of semantically mapped objects (name and description) documenting the object. Warning: Using this attribute may cause bad performance. | [{"type": "MAPPED","entity": {"id": "8366_23","name": "Account","objectType": {"name": "Term","displayName": "Term"},"attributes": null}}] | Array of Semantic Entity | [NOT] EXISTS | No | No |
"Mentioned Objects" | Object(s) mentioned in an object | [{"id": "5091_3","name": "Employees","objectType": {"name": "Table", "displayName": "Table"}}] | Array of Entity | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), =WHERE(…), !=WHERE(...), [NOT] EXISTSSpecify the stable id(s) of object(s) as filter values | No | No |
"Mentioned Users" | User(s) and group(s) mentioned in an object | [{"id": "-1_204", "name": "Bob", "fullName": "Robert Robertson", "type": "User", "description": "", "email": ""}] | Array of Grantee objects | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTSSpecify the name(s) of user(s) or group(s) as filter values. | No | Yes |
"Model Definition" | Definition on the repository model | Accounts Payable | String | None | No | No |
Model | Name of the repository model. If the model is a nested model, it will be "multi-model"."single model" | Northwind.dbo | String | =, !=, = ANY (...), != ANY (...), =WHERE(…), !=WHERE(...) | Yes | Yes |
"Model Id" | Model Id | 35913 | Integer | =, !=, = ANY (...), != ANY (...) | Yes | Yes |
"Model Name" | Name of the root repository model | Accounts Payable | String | None | No | No |
"Modified Date" | For Imported Objects: Modified date in the source system for some models. (not all bridges will have this information. ) Snowflake is an example of a bridge which supports this feature.For Custom Model Objects: Not Applicable | 2018-09-24 13:25:17 | Date | =, BEFORE, AFTER, BETWEEN ... AND ... , [NOT] EXISTS | Yes | Yes |
"My Workflow Tasks" | Workflow step-based actions on a custom model object available to you with the workflow role assignments you have | ["Discard", "Mark for Deprecation", "Start Review", "Submit for Approval"] | Array of String | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS | No | No |
Name | Name | Custom ID | String | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS, [NOT] STARTS WITH, [NOT] ENDS WITH, [NOT] CONTAINS | Yes | Yes |
"Native Id" | Native ID | {799A0437-D91A-4CC5-998A-7C23E2130F39}+00000001 | String | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS, [NOT] STARTS WITH, [NOT] ENDS WITH, [NOT] CONTAINS | Yes | Yes |
"Object Id" | Object Identifier | 123_45678 | String | =, !=, = ANY (...), != ANY (...) | Yes | No |
"Object Image" | Object Image | {"type": IMAGE,"name": "image","location": "USSocialSecurityCard.png","size": "8450"} | Attachment | [NOT] EXISTS | No | No |
"Object Profile" | Profile Name. Run GET /types/listProfiles to get a list of profile names | Tableau (Business) | String | =, !=, = ANY (...), != ANY (...) | No | No |
"Object StableId" | Object stable identifier encoded in Base 64 | AAAC0AAa1sJ7wyKdA0EUkZYCu9hE_-v4uQ | String | =, !=, = ANY (...), != ANY (...) | No | No |
"Object System Type" | Entity System Type: Entity Group, Relationship Group, Classifier, Feature, Diagram, Connection, Schema, Content, System, Hierarchy, Model, Namespace, Key, or Custom Attribute | Classifier | String | =, !=, = ANY (...), != ANY (...) | Yes | Yes |
"Object Type" | Entity Type. Run GET /types/listEntityTypes to get a list of entity types of a profile | Table | String | =, !=, = ANY (...), != ANY (...) | Yes | Yes |
"Object Type Id" | Entity Type ID | 277000016 | Integer | =, !=, = ANY (...), != ANY (...) | Yes | Yes |
"Open In Tool" | The URL which opens a report in the supported tool | null | String | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS, [NOT] STARTS WITH, [NOT] ENDS WITH, [NOT] CONTAINS | No | No |
Owner | The user who is the owner of a worksheet, collection, or dashboard. | {"id": "-1_204","name": "Bob","fullName": "Robert Robertson","type": "User","description": "","email": ""} | Grantee | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTSSpecify the name of user as filter value. | No | Yes |
Parent | The name of the parent | dbo | String | =, = ANY (...) | No | No |
"Physical Name" | Physical Name | CustomID | String | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS, [NOT] STARTS WITH, [NOT] ENDS WITH, [NOT] CONTAINS | Yes | Yes |
"Replication Quality" | The replication quality of a replication link | {"featureMappings": [{"sourceField": "1597_222","destinationField": "1601_114"},{"sourceField": "1597_223","destinationField": "1601_115"}],"numberOfSourceFields": 3,"numberOfDestinationFields": 4} | ReplicationQuality | None | No | No |
"Sensitivity Label" | The current (approved, data proposed, or lineage proposed) sensitivity label associated with the object. Run GET /repository/sensitivityLabels to get a list of available sensitivity labels | {"name": "Top Secret","position": 5,"description": "","status": "APPROVED","foregroundColor": "","backgroundColor": ""} | SensitivityLabelWithStatus | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS | No | No |
"Sensitivity Label Approved" | Approved sensitivity label. Run GET /repository/sensitivityLabels to get a list of available sensitivity labels | {"name": "Confidential","position": 4,"description": "","status": "APPROVED","foregroundColor": "","backgroundColor": ""} | SensitivityLabelWithStatus | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS | No | Yes |
"Sensitivity Label Lineage Proposed" | Sensitivity label inferred from other objects using data flow analysis. Run GET /repository/sensitivityLabels to get a list of available sensitivity labels | {"name": "Confidential","position": 4,"description": "","status": "INFERRED","foregroundColor": "","backgroundColor": ""} | SensitivityLabelWithStatus | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS | No | No |
"Sensitivity Labels Data Proposed" | Sensitivity labels detected during the data classification process and thus associated with this object. Run GET /repository/sensitivityLabels to get a list of available sensitivity labels | [{"status": "PROPOSED","name": "Confidential","position": 4,"description": "","foregroundColor": "","backgroundColor": ""}, {"status": "PROPOSED","name": "Prohibit export","position": 2,"description": "","foregroundColor": "","backgroundColor": ""}] | Array of SensitivityLabelWithStatus | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS | No | Yes |
"Sensitivity Labels Rejected" | Rejected sensitivity labels. Run GET /repository/sensitivityLabels to get a list of available sensitivity labels | [{"status": "REJECTED","name": "Top Secret","position": 5,"description": "","foregroundColor": "","backgroundColor": ""}] | Array of SensitivityLabelWithStatus | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS | No | Yes |
Source | The source objects of a complex relationship object | [{"id": "5091_3","name": "Employees","objectType": {"name": "Table","displayName": "Table"}}] | Array of Entity | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS | No | No |
"Source Model" | The models of the source objects of a complex relationship object | [{"id": "5090_1","name": "Accounts Payable erwin","objectType": {"name": "DataModel","displayName": "DataModel"}}] | Array of Entity | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS | No | No |
"Source System Definition" | "Source System Definition" on imported objects replaces any use of "Definition", "Description", or "Comment" in the source system metamodel (profile) imported from data modeling, data integration, and business intelligence tools | Custom's identifier | String | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS, [NOT] CONTAINS | No | No |
"System Description" | Replaces "Description" | Custom's identifier | String | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS, [NOT] CONTAINS | No | No |
Term (Deprecated) | Names of the terms used to define the object | ["Address", "AddressLine"] | Array of String | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS | No | No |
"Term Documentation" (Deprecated) | The list of terms (name and description) documenting the object. Also known as "Is Defined By" custom relationship | [{"type": "CLASSIFIED","entity": {"id": "8366_23","name": "Account","objectType": {"name": "Term","displayName": "Term"},"attributes": null}}] | Array of SemanticEntity | None. Use Term system attribute, or "Is Defined By" custom relationship. | No | No |
"Updated By" | The user who made the last update | {"id": "-1_204","name": "Bob","fullName": "Robert Robertson","type": "User","description": "","email": ""} | Grantee | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTSSpecify the name of user as filter value. | Yes | Yes |
"Updated Date" | The date when an object of authored content was last updated, including custom model objects (e.g.glossary terms). Or for imported objects, it is the last date the repository object was updated, not the last date the object was updated in the source system. | 2018-09-24 13:25:17 | Date | =, BEFORE, AFTER, BETWEEN ... AND ... , [NOT] EXISTS | Yes | Yes |
Viewers | Viewers of worksheets, collections, and dashboards | [{"id": "-1_204","name": "Bob","fullName": "Robert Robertson","type": "User","description": "","email": ""}, {"id": "-1_390","name": "Susan","fullName": "Susan Smith","type”: “User","description": "","email": ""}] | Array of Grantee objects | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTSSpecify the name(s) of user(s) or group(s) as filter values. | No | Yes |
"Warning Count" | Warning count | 1 | Integer | =, !=, = ANY (...), != ANY (...), [NOT] EXISTS, <, <=, >, >= and BETWEEN … AND … | Yes | Yes |
"Warned By" | The users who put a warning on the object | [{"id": "-1_204","name": "Bob","fullName": "Robert Robertson","type": "User","description": "","email": ""}, {"id": "-1_390","name": "Susan","fullName": "Susan Smith","type": "User","description": "","email": ""}] | Array of Grantee objects | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTSSpecify the name(s) of user(s) as filter values. | No | Yes |
Watchers | Users and groups who are the watchers of the model. It returns null if the object is not a model. For any name specified as a value of the filter, the name is treated as a user if there exist a user and a group by the same name. To avoid ambiguity, avoid naming users and groups by the same names. | [{"id": "-1_204","name": "Bob","fullName": "Robert Robertson","type": "User","description": "","email": ""}, {"id": "-1_39","name": "Data Lake Data Analyst","fullName": "","type": "UserGroup","description": "","email": ""}] | Array of Grantee objects | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTSSpecify the name(s) of user(s) or group(s) as filter values. | No | No |
"Workflow Assignees" | Users and groups who can perform any transitions on the object. For any name specified as a value of the filter, the name is treated as a user if there exist a user and a group by the same name. To avoid ambiguity, avoid naming users and groups by the same names. | [{"id": "-1_204","name": "Bob","fullName": "Robert Robertson","type": "User","description": "","email": ""}, {"id": "-1_39","name": "Data Lake Data Analyst","fullName": "","type": "UserGroup","description": "","email": ""}] | Array of Grantee objects | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTSSpecify the name(s) of user(s) or group(s) as filter values. | No | No |
"Workflow Deprecation Requested" | Return value true or false indicates whether an object has been requested for deprecation. Null is returned if the object belongs to a model which is not workflow enabled. | true | Boolean | =, !=, [NOT] EXISTS | No | No |
"Workflow State" | Current workflow state of a custom model object | Approved | Enumeration: Draft, Under Review, Pending Approval, Approved, Published, DeprecatedNote: the workflow state is localized. | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS, [NOT] STARTS WITH, [NOT] ENDS WITH, [NOT] CONTAINS | Yes | Yes |
"Workflow Published" | Return value true or false indicates whether an object belongs to the editable version of a workflow enabled custom model and the object exists in the published version of the model. Null is returned if the object belongs to a non-editable version, or the model is not workflow enabled. | true | Boolean | =, !=, [NOT] EXISTS | No | No |
Unlike profile attributes, custom attributes and UDPs, which normally hold scalar values (except for multi-valued custom attributes), the value of a system attribute can be an object or an array of scalar values or objects. For example, the value of Context is an array of Entity objects.
System attributes can be used in the SELECT list and WHERE clause of any MQL query, which can be used to define a Worksheet in MM Explorer or used as an input parameter or part of the body parameter to some REST API methods. Some system attributes can also be used in the Order By clause of a MQL query.
The following REST API methods take a SELECT query parameter, or a QueryInput body parameter which contains a SELECT clause. For more information about the REST API methods, refer to the MM REST API documentation.
-
GET /entities/validateMQLQuery
-
POST /entities/executeMQLQuery
-
GET /entities/{objectId}
-
GET /relationships/{objectId}
Object-valued System Attributes
The following system attributes are some examples of the object-valued system attributes:
-
Context
-
"Column Histogram"
-
"Column Statistics"
-
"Data Profiling"
-
"Data Sampling"
-
"Workflow Assignees" in the SELECT
The examples in the previous section show such values in Json format. The schema of the objects Entity, SemanticEntity, DataSample, DataProfile, DataProfile_Statistics, DataProfile_Histogram, and Grantee, etc. are defined in the MM REST API documentation.
When used in the WHERE clause, the filters with the object-valued system attributes can only be ANDed with other filters and only be used with the EXISTS and NOT EXISTS operators.
Custom Attributes in MQL
Custom attributes are the reusable attributes defined in the meta model. They can be used on both business model objects and imported objects.
Custom Relationships
Custom relationships are the reusable relationships defined in the meta model. They define relationships between a business model object and another business model object, a business model object and an imported model object, or an imported model object and another imported model object. For example, the custom relationship "Is Defined By" defines a relationship between an imported model object and a term.
When used in the WHERE clause, the filters with the custom relationship can be used with the =, !=, =ANY, !=ANY, !=ALL, !=ALL, =WHERE, !=WHERE, EXISTS and NOT EXISTS operators.
Data Profiling Attributes
Data profiling attributes can be used in the SELECT list, WHERE clause and ORDER BY clause of a MQL Query.
The following Data Profiling attributes are supported on file fields or table/view columns.
Data Profiling attribute name | Description | Value examples | Value data type | Supported operators in WHERE |
---|---|---|---|---|
"Data Profiling".Blank | Number of blank value rows | 20 | Long | =, !=, = ANY (...), != ANY (...), [NOT] EXISTS, <, <=, >, >= and BETWEEN |
"Data Profiling"."Distinct" | Number of distinct rows | 1001 | Long | =, !=, = ANY (...), != ANY (...), [NOT] EXISTS, <, <=, >, >= and BETWEEN |
"Data Profiling".Duplicate | Number of duplicate rows | 5 | Long | =, !=, = ANY (...), != ANY (...), [NOT] EXISTS, <, <=, >, >= and BETWEEN |
"Data Profiling".Valid | Number of valid rows | 5 | Long | =, !=, = ANY (...), != ANY (...), [NOT] EXISTS, <, <=, >, >= and BETWEEN |
"Data Profiling".Empty (Deprecated) | Number of empty rows: null in database or empty in files. This attribute is split into 3 attributes: "Data Profiling".Null, "Data Profiling".Blank and "Data Profiling".Zero. | 5 | Long | =, !=, = ANY (...), != ANY (...), [NOT] EXISTS, <, <=, >, >= and BETWEEN |
"Data Profiling".Invalid | Number of invalid rows | 5 | Long | =, !=, = ANY (...), != ANY (...), [NOT] EXISTS, <, <=, >, >= and BETWEEN |
"Data Profiling".Min | Lowest value | 1.0 | Double | =, !=, = ANY (...), != ANY (...), [NOT] EXISTS, <, <=, >, >= and BETWEEN |
"Data Profiling".Max | Highest value | 3.123456E30 | Double | =, !=, = ANY (...), != ANY (...), [NOT] EXISTS, <, <=, >, >= and BETWEEN |
"Data Profiling".Mean | Mean value | 3.123456E30 | Double | =, !=, = ANY (...), != ANY (...), [NOT] EXISTS, <, <=, >, >= and BETWEEN |
"Data Profiling".Null | Number of null value rows | 10 | Long | =, !=, = ANY (...), != ANY (...), [NOT] EXISTS, <, <=, >, >= and BETWEEN |
"Data Profiling".Variance | Variance value | 3.123456E30 | Double | =, !=, = ANY (...), != ANY (...), [NOT] EXISTS, <, <=, >, >= and BETWEEN |
"Data Profiling".Median | Median value | 3.123456E30 | Double | =, !=, = ANY (...), != ANY (...), [NOT] EXISTS, <, <=, >, >= and BETWEEN |
"Data Profiling"."Lower Quantile" | Lower quantile | 3.123456E30 | Double | =, !=, = ANY (...), != ANY (...), [NOT] EXISTS, <, <=, >, >= and BETWEEN |
"Data Profiling"."Upper Quantile" | Upper quantile | 3.123456E30 | Double | =, !=, = ANY (...), != ANY (...), [NOT] EXISTS, <, <=, >, >= and BETWEEN |
"Data Profiling"."Avg Length" | Average length of strings | 6.5 | Double | =, !=, = ANY (...), != ANY (...), [NOT] EXISTS, <, <=, >, >= and BETWEEN |
"Data Profiling"."Min Length" | Minimum length of strings | 3 | Integer | =, !=, = ANY (...), != ANY (...), [NOT] EXISTS, <, <=, >, >= and BETWEEN |
"Data Profiling"."Max Length" | Maximum length of strings | 20 | Integer | =, !=, = ANY (...), != ANY (...), [NOT] EXISTS, <, <=, >, >= and BETWEEN |
"Data Profiling"."Inferred Data Types" | List of data types detected by the profiler | ["integer", "string"] | Array of String | =, !=, = ANY (...), != ANY (...), = ALL (...), != ALL (...), [NOT] EXISTS |
"Data Profiling".Zero | Number of zero value rows | 40 | Long | =, !=, = ANY (...), != ANY (...), [NOT] EXISTS, <, <=, >, >= and BETWEEN |
The following Data Profiling attributes are supported on files, tables and views.
Data Profiling attribute name | Description | Value examples | Value data type | Supported operators in WHERE |
---|---|---|---|---|
"Data Profiling"."Profiled Date" | Last profiled date | 2022-09-24 13:25:17 | Date | =, BEFORE, AFTER, BETWEEN ... AND ... , [NOT] EXISTS |
"Data Profiling"."Processed Records" | Processed row count | 10 | Long | =, !=, = ANY (...), != ANY (...), [NOT] EXISTS, <, <=, >, >= and BETWEEN |
"Data Profiling"."Total Records" | Total row count | 100 | Long | =, !=, = ANY (...), != ANY (...), [NOT] EXISTS, <, <=, >, >= and BETWEEN |
When somebody uses a data profiling attribute in a filter, MIMM removes all objects from the results which are marked as hide data for that user. The hide data is controlled by multiple factors: whether the user has the Data Viewer capability object role assignment, whether a harvested object has a proposed or assigned data class resulting in a Sensitivity Label that has the HIDE DATA flag, or whether the object has a Sensitivity Label that has the HIDE DATA flag.
Source History Attributes
Source History attributes can be used in the SELECT list, WHERE clause and ORDER BY clause of a MQL Query.
The following Source History attributes are supported on a set of imported objects such as tables, views, and Tableau worksheets, dashboards and workbooks.
Source History attribute name | Description | Value examples | Value data type | Supported operators in WHERE | Supported in ORDER BY | Supported in FACET |
---|---|---|---|---|---|---|
"Source History"."Popularity Count" | Popularity count of the object in the source system | 10 | Integer | =, !=, = ANY (...), != ANY (...), [NOT] EXISTS, <, <=, >, >= and BETWEEN … AND … | Yes | Yes |
"Source History"."Last Data Access Date" | Last data access date for database tables and views etc. | 2024-07-24 13:25:17 | Date | =, BEFORE, AFTER, BETWEEN ... AND …, [NOT] EXISTS | Yes | Yes |
"Source History"."Last Data Update Date" | Last data modification date for database tables and views etc. | 2024-07-24 13:25:17 | Date | =, BEFORE, AFTER, BETWEEN ... AND …, [NOT] EXISTS | Yes | Yes |
"Source History"."Last Access Users" | Last users who access an object | [{"name": "Angela","email": "agelar@metaintegration.com", "lastAccessTime": "2024-07-24 13:25:17"}] | Array of SourceHistoryAccessUser | [NOT] EXISTS | No | No |
Related Object Type, Related Object Property AND Related Object Relationship
In MM one object may relate to some other object(s). We call the latter related object(s) of the current object. The relationship between the current object and its related objects is called the related object type.
For example, a table Customer may have columns such as CustomerId, Name, Address, etc. These columns are the table Customer's related objects. The related object type is Children.
The related object types are a subset of the system attributes. These are the related object types currently available:
-
Children: children of the current object
-
Parent: parent of the current object
In some cases, the user wants to select or filter on the properties of the related objects. We call the property of a related object a related object property. For example, Parent."Object Type" refers to the object type of the parent.
Here is a list of properties defined on each of the related object type:
Related Object Type | Related Object Properties |
---|---|
Children (Deprecated) | System Attribute, profile attribute, data profiling attribute, custom attribute, custom relationship, and udp |
Parent | System Attribute, profile attribute, custom attribute, custom relationship, and udp |
The user may also select on the relationships of the related objects. We call the relationship of a related object a related object relationship. For example, Parent."Is Defined By" refers to the terms used to classify the parent of the current object. The value of a relationship or related object relationship is an array of objects of the type of Entity.
A related object type can be used as a system attribute by itself or as a related object property of another related object type or the same related object type. When a related object type is used as a system attribute or a related object property, its value is the same as the Name system attribute of the related object(s). For example, the system attribute Parent of the EmployeeId column is "Employees", which is the name of the Employees table.
We only support related objects of one level. I.e. we do not support the following: Parent.Parent. "Object Type".
Multi-valued Related Object Types
One object may have multiple related objects of the same type. For example, a table may have multiple columns. This kind of related object type is multi-valued.
The following related object types are multi-valued:
- Children (Deprecated)
The value of any multi-valued related object property is an array of strings or other object types.
If the multi-valued related object property is a custom attribute of the Enumeration (multi-value) data type, a multi-valued custom relationship, or a multi-valued system attributes or data profiling attribute, such as Children, "Data Classifications", "Data Classifications Approved", "Data Classifications Matched", "Data Classifications Rejected", Labels, Collections, "My Workflow Tasks", Context, "Column Histogram", "Data Profiling"."Inferred Data Types", the value of the property is an array of arrays of strings or objects. For example, Children.Children of a database schema is an array of arrays. The outer array is an array of tables of the schema. The inner array is an array of column names of each table of the outer array.
The value of any multi-valued related object relationship is an array of arrays of objects of the type of Entity.
Attribute resolution
A name can identify multiple property types especially if the configuration contains models with many different profiles. To prevent ambiguity the user may qualify a profile attribute or profile relationship with a profile name. Custom attributes, custom relationships, UDPs and system attributes also share the same name space. MM uses the following precedence rules in resolving ambiguity among the custom attributes, custom relationships, UDPs, system attributes and any unqualified profile attributes or profile relationships. The rules are listed in descending order:
-
System attributes and Source History attributes
-
Custom attributes
-
Custom relationships
-
Data Profiling attributes
-
Profile attributes
-
Profile relationships
-
UDPs