Query of Views

From the “Query” tab, you can query the view.

The page is divided into two sections:

To display all the data of the view, select some output columns and click image0. You can also add conditions to filter the data obtained from the view.

Query Definition

It is the graphical way of building a query. It is divided in two parts:

Query Definition Wizard

Query Definition

  • The left side (red) contains the fields to work with:

    • Fields: contains the list of all the fields of the view (they can be sorted alphabetically and/or filtered). You can multi-select some fields and drag-and-drop them to the right side. In addition to the fields of the view, a special field called NUMBER_OF_RECORDS is available as a shortcut for adding a count(*) field to the output.

      Query Definition - Fields

      Query Definition - Fields

    • Relationship Fields: contains the list of fields that are used in the condition mapping of an association with cardinality 1. In this case, you can select which fields of the associated view you want to add to the result.

      For example, if you are querying the view “employee” and you want to see the data of the view “department” and there is an association between “employee” and “department” with cardinality 1 in the end point of the “department” view, you can select the fields of the “department” view you want to add to the result. You can also order the results by these fields.

      Query Definition - Relationship Fields

      Query Definition - Relationship Fields

  • The right side (green) is the working area, where you add the fields from the left side and edit them to configure the final query.

    • Outputs: shows the list of fields that will conform the output schema of the query and in which order they appear. You change the order by drag-and-drop a field to the position you want. After adding a field to this section, you can edit in (contextual menu), to change its name or to create an expression.

      Click Add > New Field to add a new derived field to the output. In the expression assigned to this field you cannot use expanded fields.

      Click Add > New Aggr. field to add an aggregation field. In this case, a GROUP BY expression is automatically added to the query.

      Note

      Because the syntaxis for the expanded fields is <role_name>/<field>, the / cannot be used as an operator. The function DIV has to be used instead.

      Query Definition - Output

      Query Definition - Output

    • Filters: complex conditions to filter the data of the view. If the view contains mandatory fields, the wizard will automatically create a filter for each one (they cannot be removed). The user would only have to complete their expressions.

      You can use date, time and timestamp literals in your queries. If the selected field is of date type, an example value with the appropriate format (taking into account the subtype of the field) is shown.

      Query date

      Query date

    • Order by: order the results by one or more fields. You can drag-and-drop fields from the list of “Fields” or from the “Outputs”. Once a field is added to this section, you can change its order mode (ascendant/descendant) by clicking on the arrow.

      Query Definition - Order By

      Query Definition - Order By

Note

You can use expanded fields (of associations with cardinality 1) in the following places of the query:

  • Outputs
  • Filters
  • Order By
  • GROUP BY clause (automatically generated)

The expanded fields are used in the same way as the fields of the view being queried and will be shown with the syntax <role_name>/<field>.

In these wizards, the expression editor provides the autocomplete functionality and highlights the different elements that make up the expression with different colors (function names, fields, literals, operators, etc.). Besides, the fragments not identified as any of the possible element types, will be highlighted in red.

At the right side of the Query Definition bar, there is a link (image3) to save the query executed to obtain these results. It is associated to the current user and server and will be shown in the saved queries section (see section Saved Queries). This is useful if the executed query is complex and you are going to execute it often or if you want to deploy it to the Virtual DataPort server.

You can obtain the VQL that will be generated for the current query by clicking image5.

Finally, you can export the results to a file by clicking image4. You can select the following:

  • The output format: CSV, HTML, Excel or Tableau (see A Note about Exporting to Tableau for more information about Tableau).
  • The number of exported results:
    • All results.
    • Only visible results. I.e. the part of the results you are currently seeing.
    • Only the first n results.
Export options

Export options

Note

If the view contains compound fields or expanded associations “to Many” (see section Expanding Associations for more information), those fields are going to be exported as a JSON string.

Note

When exporting to Excel the maximum number of results that will be exported is 1.048.576

Query Results

Regarding the results, there are two special cases:

  • Compound fields: click the icon to see the value of its subfields on a pop-up.
  • Binary fields are shown as “[BINARY DATA]” and cannot be downloaded.

If the queried view has associations with another views and you included the links in the Relationship Links section of the Query Definition, you can browse them by clicking image1. A new pop-up will be opened with the data at the other side of the associations. It is also possible to expand associations (see section Expanding Associations for more information).

Query results for Department view

Query results for Department view

In each cell of the table, if the content is too long, it will not increase the height of the row, but a tool-tip will be used to show the rest of the content and the height will be kept uniform for all the rows.

The first column of each row contains an icon (image2) that shows in a dialog (Transposed table for first row) the data from that row in a vertical format (it can be helpful when a table has too many columns, because it is difficult to see the results of a complete row).

Transposed table for first row

Transposed table for first row

Expanding Associations

Expanding an association between two entities means that related tuples/entities are included inline in the results. For instance, suppose a scenario with entities Order and Customer, as shown in Expanding an association (“to One”). Each tuple in Order is associated with a tuple in Customer (thanks to PK-FK relationship). This way, when querying an order you can eagerly retrieve the data from the customer that ordered it. The same way, when querying a customer, you can retrieve all his/her orders.

Expanding an association (“to One”)

Expanding an association (“to One”)

Following with this example, you can have two scenarios:

  1. Associations “to One”: like in the former example, where an order belongs to a customer (and only to that customer). This way, as conceptually shown in Expanding an association (“to One”), you can select the fields from the associated view (Customer) you want to eagerly retrieve when retrieving the data from the order. To do that, you have to select the fields you want to expand (see Selecting fields from an association to be expanded) and they will appear in the result (see Association expanded).
Selecting fields from an association to be expanded

Selecting fields from an association to be expanded

Association expanded

Association expanded

  1. Associations “to Many”: a tuple in a view is related to one or more tuples in other view. It is the case of a customer that may have done several orders. This way, you can traverse the association and see all orders done by a particular customer. To do that, you have to select the fields you want to expand (see Selecting fields to expand the orders of a customer) and an icon to expand the association will be added to the table (see Link to expand the orders for a customer). You can click on the icon image1 and a new pop-up will be displayed with the orders for the desired customer.
Selecting fields to expand the orders of a customer

Selecting fields to expand the orders of a customer

Pop-up with the expanded association

Pop-up with the expanded association

A Note About Exporting to Tableau

Tableau needs some native libraries in order to work. These libraries are not included with the Denodo Platform, so they must be manually downloaded and installed.

In order to export data to Tableau you have to download the Data Extract API, which is available on the Tableau website. Go to https://www.tableau.com/data-extract-api and choose the appropriate version for your platform. The programming language must be Java.

The native libraries and the tdeserver file must be on one of the folders included in the native library path used by the executable of the web container where the Data Catalog is deployed:

  • On Windows systems, after uncompressing the downloaded file you have to copy the files included in the folder “bin” to a folder included in the native library path. For example, you can copy them to C:/WINDOWS/SYSTEM32 or to any folder included in the environment variablePATH.
  • On Linux systems, after uncompressing the downloaded file you have to copy the files included in the folders “bin” and “lib/dataextract” to a folder included in the native library path. For example, you can copy them to a standard library folder of your SO (e.g. /lib or /usr/lib) or use the environment variable LD_LIBRARY_PATH to specify another folder.