LEFT () не в стандартном SQL ...
В BigQuery Standard SQL вы можете использовать SUBSTR(value, position[, length])
вместо Legacy's LEFT
... и, похоже, нет функции, которая будет принимать и тип массива.
Существует множество связанных с массивом функций , а также функций, которые принимают массив в качестве аргумента - например, UNNEST ()
Я бы хотел использовать BigQuery Standard SQL для такого запроса:
Ниже приведен эквивалентный запрос для BigQuery Standard SQL
SELECT package, COUNT(*) COUNT
FROM (
SELECT REGEXP_EXTRACT(line, r' ([a-z0-9\._]*)\.') package, id
FROM (
SELECT line, id
FROM `github-groovy-files.github.contents`,
UNNEST(SPLIT(content, '\n')) line
WHERE SUBSTR(line, 1, 6)='import'
)
GROUP BY package, id
)
GROUP BY 1
ORDER BY COUNT DESC
LIMIT 30
Вместо WHERE SUBSTR(line, 1, 6)='import'
вы можетеиспользуйте WHERE line LIKE 'import%'
Также обратите внимание, что этот запрос может быть написан несколькими способами - поэтому в моем приведенном выше примере я сосредоточился на «переводе» вашего запроса из устаревшего в стандартный SQL, сохраняя при этом базовую структуру и подход оригинала.query
Но если вы захотите переписать его, используя возможности стандартного SQL - вы получите что-то вроде ниже
SELECT REGEXP_EXTRACT(line, r' ([a-z0-9\._]*)\.') package, COUNT(DISTINCT id) count
FROM `github-groovy-files.github.contents`,
UNNEST(SPLIT(content, '\n')) line
WHERE line LIKE 'import%'
GROUP BY 1
ORDER BY count DESC
LIMIT 30