Как фильтровать географические данные в BigQuery - PullRequest
0 голосов
/ 04 августа 2020

Мне нужно отфильтровать мою таблицу BigQuery на основе столбца типа «География». Я пробовал ниже запросы SELECT * FROM bigqueryproject1-279667.mycreatedataset1.newTabelwithAllDatatype where location = ST_GEOGPOINT(-6, 6), но это показывает мне ошибку проверки. Равенство не определено для аргументов типа GEOGRAPHY. Если я заменяю '=' оператором Like, я получаю сообщение о том, что подобное применимо только для String и Byte. Я просмотрел эту документацию, но не понял, как установить фильтр.

Ответы [ 2 ]

2 голосов
/ 04 августа 2020

Думаю, вам нужно что-то вроде этого:

WHERE ST_INTERSECTS(location, ST_GEOGPOINT(-6, 6))
1 голос
/ 04 августа 2020

Для географии оператор равенства не определен.

Вы можете использовать ST_Equals, например ST_Equals(location, ST_GEOGPOINT(-6, 6)), если вам действительно нужны только строки со значением geography (почти), точно равным этой точке.

Чаще вы хотели бы отфильтровать по другим условиям, например, пересечениям с указанной c точкой, используйте ST_Intersects(location, ST_GEOGPOINT(-6, 6)) или при условии нахождения на некотором расстоянии от точки используйте ST_DWithin(location, ST_GEOGPOINT(-6, 6), 100), где последний аргумент - расстояние в метрах .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...