Data Type Functions

Introduced in release: 1.14

Drill supports the following functions that return data type information:

Returns the data type of a column (using the SQL names) whether the column is NULL or not. You can use the SQL name in a CAST statement, for example:

          sqlTypeOf( CAST(x AS <data type> ))  
          //Returns <data type> as the type name.   If the type is DECIMAL, the type also includes precision and scale, for example:  
          DECIMAL(6, 3)   **modeOf()**   Returns the cardinality (mode) of the column as "NOT NULL", "NULLABLE", or "ARRAY". Drill data types include a cardinality, for example `Optional Int` or `Required VarChar`.  

Similar to typeOf(), but returns the internal Drill names even if the value is NULL. _____

Usage Notes

The data type functions are useful for data conversions. For example, if you know a column value is Nullable Int, you can assume that the data type is one that Drill derived. You can then merge the Drill-derived data type with the data type from another file that has actual values.

Usage Examples

The follow examples show you how you can use the data type functions:

Example 1 This example shows the Drill internal type, nullable int, for a missing column:

   SELECT sqlTypeOf(a) AS a_type, modeOf(a) AS a_mode FROM `json/all-null.json`;

   |  a_type  |  a_mode   |

Example 2 This example shows arrays (repeated) types:

   SELECT sqlTypeOf(columns) as col_type, modeOf(columns) as col_mode
   FROM `csv/cust.csv`;

   |      col_type      | col_mode  |
   Example 3: This example shows non-null types:
   SELECT sqlTypeOf(`name`) AS name_type,
   modeOf(`name`) AS name_mode FROM `csvh/cust.csvh`;

   |     name_type      | name_mode  |