Skip to content

Query Results (OLAP)

JoeWinter edited this page Dec 15, 2014 · 2 revisions

[Table of Contents](https://github.com/dell-oss/Doradus/wiki/OLAP Databases: Table-of-Contents) | Previous | Next
OLAP Object Queries: Query Results


An object query always returns an output entity even if there are no objects matching the query request. The outer element is `results`, which contains a single `docs` element, which contains one `doc` element for each object that matched the query expression. Examples for various field types are shown below.

Empty Results

If the query returns no results, the docs element is empty. In XML:

<results>
   <docs/>
</results>

In JSON:

{"results": {  
  "docs": []  
}}  

SV Scalar Fields

This object query requests all scalar fields of Person objects whose LastName is Garn in shard 2014-06-18:

GET /Email/Person/_query?q=LastName:Garn&f=*&shards=2014-06-18

In XML, the result looks like this:

<results>
	<docs>
		<doc>
			<field name="Department">Field Sales</field>
			<field name="FirstName">Chris</field>
			<field name="LastName">Garn</field>
			<field name="Name">Chris Garn</field>
			<field name="Office">Aliso Viejo 5</field>
			<field name="_ID">07Z094KNjmEsqMoV/yNI0g==</field>
		</doc>
		<doc>
			<field name="Department">Sales Operations</field>
			<field name="FirstName">Jim</field>
			<field name="LastName">Garn</field>
			<field name="Name">Jim Garn</field>
			<field name="Office">Aliso Viejo 5</field>
			<field name="_ID">kUNaqNJ2ymmb07jHY9OPOw==</field>
		</doc>
		<doc>
			<field name="Department">Admin</field>
			<field name="FirstName">Doug</field>
			<field name="LastName">Garn</field>
			<field name="Name">Doug Garn</field>
			<field name="Office">Aliso Viejo 5</field>
			<field name="_ID">m1yYabbtytmjw+e8OCz1dg==</field>
		</doc>
	</docs>
</results>

In JSON:

{"results": {
	"docs": [
		{"doc": {
			"Department": "Field Sales",
			"FirstName": "Chris",
			"LastName": "Garn",
			"Name": "Chris Garn",
			"Office": "Aliso Viejo 5",
			"_ID": "07Z094KNjmEsqMoV/yNI0g=="
		}},
		{"doc": {
			"Department": "Sales Operations",
			"FirstName": "Jim",
			"LastName": "Garn",
			"Name": "Jim Garn",
			"Office": "Aliso Viejo 5",
			"_ID": "kUNaqNJ2ymmb07jHY9OPOw=="
		}},
		{"doc": {
			"Department": "Admin",
			"FirstName": "Doug",
			"LastName": "Garn",
			"Name": "Doug Garn",
			"Office": "Aliso Viejo 5",
			"_ID": "m1yYabbtytmjw+e8OCz1dg=="
		}}
	]
}}

The _ID field of each object is always included. SV scalar fields are returned only if they have values. If a group contains any leaf fields with values, they are returned at the outer (doc) level: the group field is not included.

When timestamp fields are returned, the fractional component of a value is suppressed when it is zero. For example:

2012-01-06 19:59:51

This value means that the seconds component is a whole value (51). If a seconds component has a fractional value, it is displayed with 3 digits to the right of the decimal place. Example:

2012-01-06 19:59:51.385

MV Scalar Fields

The following object query requests the MV scalar field Tags:

GET /Email/Message/_query?q=*&f=Tags&shards=2014-06-18

A typical result is shown below:

<results>
	<docs>
		<doc>
			<field name="Tags">
				<value>AfterHours</value>
			</field>
			<field name="_ID">+/pz/q4Jf8Rc2HK9Cg08TA==</field>
		</doc>
		<doc>
			<field name="Tags">
				<value>Customer</value>
				<value>AfterHours</value>
			</field>
			<field name="_ID">+/wqUBY1WsGtb7zjpKYf7w==</field>
		</doc>
		<doc>
			<field name="Tags"/>
			<field name="_ID">+1ZQASSaJei0HoGz6GdINA==</field>
		</doc>
	</docs>
</results>

The same request in JSON is shown below:

{"results": {
	"docs": [
		{"doc": {
			"Tags": ["AfterHours"],
			"_ID": "+/pz/q4Jf8Rc2HK9Cg08TA=="
		}},
		{"doc": {
			"Tags": ["Customer","AfterHours"],
			"_ID": "+/wqUBY1WsGtb7zjpKYf7w=="
		}},
		{"doc": {
			"Tags": [],
			"_ID": "+1ZQASSaJei0HoGz6GdINA=="
		}}
	],
}}

As shown, all values of the Tags field are returned, and an element is included even when it is null, as it is for the third object.

Link Fields

When a query has no fields parameter or explicitly requests "*", only scalar fields of perspective objects are returned. When the fields parameter includes a link field, by default only the _ID field of each linked object is returned. If a link field is requested that has no values, an empty list is returned. For example, consider this object query:

GET /Email/Person/_query?q=LastName=Powell&f=Manager,DirectReports&shards=2014-06-18

This query searches for people whose LastName is Powell and requests the Manager and DirectReports links. An example result in XML:

<results>
	<docs>
		<doc>
			<field name="_ID">gfNqhYF7LgBAtKTdIx3BKw==</field>
			<field name="DirectReports">
				<doc>
					<field name="_ID">mKjYJmmLPoTVxJu2xdFmUg==</field>
				</doc>
			</field>
			<field name="Manager">
				<doc>
					<field name="_ID">nLOCpa7aH/Y3zDrnMqG6Fw==</field>
				</doc>
			</field>
		</doc>
		<doc>
			<field name="_ID">sHUm0PEKu3gQDDNIHHWv1g==</field>
			<field name="DirectReports"/>
			<field name="Manager">
				<doc>
					<field name="_ID">tkSQlrRqaeHsGvRU65g9HQ==</field>
				</doc>
			</field>
		</doc>
	</docs>
</results>

In JSON:

{"results": {  
	"docs": [  
		{"doc": {  
			"_ID": "gfNqhYF7LgBAtKTdIx3BKw==",  
			"DirectReports": [  
				{"doc": {  
					"_ID": "mKjYJmmLPoTVxJu2xdFmUg=="  
				}}  
			],  
			"Manager": [  
				{"doc": {  
					"_ID": "nLOCpa7aH/Y3zDrnMqG6Fw=="  
				}}  
			]  
		}},  
		{"doc": {  
			"_ID": "sHUm0PEKu3gQDDNIHHWv1g==",  
			"DirectReports": [],  
			"Manager": [  
				{"doc": {  
					"_ID": "tkSQlrRqaeHsGvRU65g9HQ=="  
				}}  
			]  
		}}  
	]  
}}  

As shown, requested link fields are returned even if they have no values. By default, only the _ID values of linked objects are included.

Clone this wiki locally