Ниже для BigQuery Standard SQL
#standardSQL
SELECT
docT.name,
AVG(docT.score) average,
STRING_AGG(entityT.ename) entities
FROM `project.dataset.document_sentiment` docT
JOIN (
SELECT dId, STRING_AGG(ename) ename
FROM `project.dataset.entity_sentiment`
GROUP BY dId
) entityT
ON docT.dId = entityT.dId
GROUP BY docT.name
Вы можете протестировать, поиграть с выше, используя примеры данных из вашего вопроса, как в примере ниже
#standardSQL
WITH `project.dataset.document_sentiment` AS (
SELECT 'A' dId, 'n1' name, 100 score UNION ALL
SELECT 'B', 'n1', 70
), `project.dataset.entity_sentiment` AS (
SELECT 'e1' ename, 'a' details, 'A' dId UNION ALL
SELECT 'e2', 'a', 'A' UNION ALL
SELECT 'e3', 'b', 'A' UNION ALL
SELECT 'e4', 'c', 'B'
)
SELECT
docT.name,
AVG(docT.score) average,
STRING_AGG(entityT.ename) entities
FROM `project.dataset.document_sentiment` docT
JOIN (
SELECT dId, STRING_AGG(ename) ename
FROM `project.dataset.entity_sentiment`
GROUP BY dId
) entityT
ON docT.dId = entityT.dId
GROUP BY docT.name
Row name average entities
1 n1 85.0 e1,e2,e3,e4