должен сделать это с LegacySQL из-за некоторых ограничений
Ниже приведено описание BigQuery Legacy SQL
Option # 1
#legacySQL
SELECT id, NEST(name) name
FROM [project:dataset.table]
GROUP BY id
HAVING SUM(name IN ('name1', 'name4')) = 2
и заданотаблица назначения без значения Flatten Results, установленной в false (не проверено в пользовательском интерфейсе)
Параметр # 2
#legacySQL
SELECT id, GROUP_CONCAT(name) name
FROM [project:dataset.table]
GROUP BY id
HAVING SUM(name IN ('name1', 'name4')) = 2
с результатом (при условии, что в таблице были получены данные из вашего вопроса)
Row id name
1 124 name1,name3,name4,name5
2 125 name1,name4,name7
Примечание: приведенные выше опции предполагают, что в массиве имен нет повторяющихся имен, что, скорее всего, выглядит как ваш случай
Вариант № 3 - на самом деле это для BigQuery Standard SQL - при условиивы можете перенести ваши вещи в стандартный SQL
#standardSQL
SELECT id, name
FROM `project.dataset.table`
WHERE 2 = (SELECT COUNT(DISTINCT item) FROM UNNEST(name) item WHERE item IN ('name1','name4'))
с результатом
Row id name
1 124 name1
name3
name4
name5
2 125 name1
name4
name7