Introduction to BigQuery
Matt Forrest
Field CTO
Example with unstructured data:
/*--------------+-----------------------------------------*
| customer_id | emails |
+--------------+-----------------------------------------+
| 12345 | ['[email protected]', '[email protected]'] |
*--------------+-----------------------------------------*/
SELECT ARRAY (SELECT 'bigquery' UNION ALL SELECT 'analytics' UNION ALL SELECT 'sql') AS new_array;
/*------------------------------------* | new_array | +------------------------------------+ | ['bigquery', 'analytics', 'sql'] | *-----------------------------------*/
SELECT ARRAY (SELECT 'bigquery' UNION ALL SELECT 'analytics' UNION ALL SELECT 'sql')[1] as result;
/*---------------* | result | +---------------+ | 'analytics' | *---------------*/
SELECT STRUCT
<skill string, learning bool> ('big query', true) as skills;
/*--------------+--------------* | skills.skill | learning | +--------------+------------- + | 'big query' | true | *--------------+--------------*/
SELECT STRUCT <skill string, learning bool>
('big query', true).skill as key;
/*--------------+ | key. | +--------------+ | 'big query' | *--------------*/
SELECT
ARRAY_LENGTH(
[
'[email protected]',
'[email protected]'
]) as len;
/*------*
| len |
+------+
| 2 |
*------*/
SELECT
ARRAY_CONCAT(
['one'], ['two']) as new_array;
/*-------------------*
| new_array |
+-------------------+
| ['one', 'two'] |
*-------------------*/
Unnest-ing our email data:
SELECT
*
FROM
UNNEST(['[email protected]', '[email protected]']) as emails;
/*-------------------+
| emails |
+-------------------+
| '[email protected]' |
| '[email protected]' |
*-------------------*/
Example data - STRUCT inside an ARRAY:
[
{'big query': true},
{'sql': true}
]
SELECT my_skills.skill, my_skills.learned FROM UNNEST(skills) as my_skills
/*--------------+--------------* | skill | learned | +--------------+------------- + | 'big query' | true | +--------------+------------- + | 'sql' | true | *--------------+--------------*/
Using search with email data:
SELECT
SEARCH(['[email protected]', '[email protected]'], 'gmail.com') as results;
/*----------*
| results |
+----------+
| true |
*----------*/
ARRAYs
my_array[0]
)STRUCTs
ARRAY_CONCAT/ARRAY_LENGTH
UNNEST
SEARCH
Introduction to BigQuery