BigQuery comprueba la superposición de matrices

Así que estoy escribiendo una consulta de BigQuery y, básicamente, solo necesito poder verificar si alguna de las cadenas está presente como elementos en una de las columnas de la tabla, donde la columna sobre la que se trata contiene matrices de cadenas. Solo por contexto, estoy escribiendo la consulta como parte de un pequeño trabajo automatizado de Python y estoy usando SQL estándar.

No pude encontrar nada que compruebe explícitamente la inclusión de matrices aquí: https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators

Así que se me ocurrió una solución que emplea una expresión regular bastante hacky, específicamente:

...other query stuff... WHERE REGEXP_CONTAINS((LOWER(ARRAY_TO_STRING(column, '-'))), r"({joined_string})") 

… donde column es la columna que me importa en la tabla, y joined_string es una cadena larga compuesta por todas las cadenas que necesito verificar | (donde | sirve como el regex O operador).

¿Existe algún tipo de funcionalidad incorporada en el estándar de BigQuery SQL que le permita a uno hacer esto de forma más segura?

A continuación se muestran dos ejemplos.

Primero asumiendo que tienes tus cadenas en otra tabla strings

 #standardSQL WITH yourTable AS ( SELECT 1 AS id, ['abc', 'def', 'xyz'] AS column UNION ALL SELECT 2, ['123', '456', '789'] UNION ALL SELECT 3, ['135', '246', '369'] ), strings AS ( SELECT 'abc' AS str UNION ALL SELECT '123' UNION ALL SELECT '456' ) SELECT * FROM yourTable WHERE (SELECT COUNT(1) FROM UNNEST(column) AS col JOIN strings ON col = str) > 0 

Puede agregar a continuación a la lista SELECT si necesita ver cuántas cadenas coinciden

 (SELECT COUNT(1) FROM UNNEST(column) AS col JOIN strings ON col = str) AS cnt 

El segundo ejemplo asume que tienes una lista de cadenas empaquetadas en Array

 #standardSQL WITH yourTable AS ( SELECT 1 AS id, ['abc', 'def', 'xyz'] AS column UNION ALL SELECT 2, ['123', '456', '789'] UNION ALL SELECT 3, ['135', '246', '369'] ), strings AS ( SELECT ['abc', 'def', '456'] AS strs ) SELECT yourTable.* FROM yourTable, strings WHERE (SELECT COUNT(1) FROM UNNEST(column) AS col JOIN UNNEST(strs) AS str ON col = str) > 0 

Igual que en el primer ejemplo: puede agregar a continuación a la lista SELECT para ver el conteo de coincidencias

 (SELECT COUNT(1) FROM UNNEST(column) AS col JOIN UNNEST(strs) AS str ON col = str) AS cnt