ARRAYTABLE
The ARRAYTABLE function processes an array input to produce tabular output. The function itself defines what columns it projects. The ARRAYTABLE function is implicitly a nested table and may be correlated to preceding FROM clause entries.
Usage
ARRAYTABLE(expression COLUMNS <COLUMN>, ...) AS name
 
COLUMN := name datatype
Parameters
| Parameter | Description | 
|---|---|
expression | The array to process, should be one of the following: 
 
        CODE
     
    
 | 
Syntax Rules
- The column names may not contain duplicates.
 
Examples
1. As a nested table:
SELECT x.* FROM (CALL source.invokeMDX('some query')) r, ARRAYTABLE(r.tuple COLUMNS first STRING, second BIGDECIMAL) x
2. Using ARRAY():
SELECT * FROM ARRAYTABLE(ARRAY('1', 2.2, 3) COLUMNS d STRING, e DOUBLE, f INTEGER) a 
ARRAYTABLE is effectively a shortcut for using the  ARRAY_GET function in a nested table. These two example calls are essentially the same:
ARRAYGET(val COLUMNS col1 STRING, col2 INTEGER) AS X
TABLE(SELECT CAST(ARRAY_GET(val, 1) AS STRING) AS col1, CAST(ARRAY_GET(val, 2) AS INTEGER) AS col2) AS X