Ошибочный вывод из parse_address с использованием EXTENSION address_standardizer - PullRequest
1 голос
/ 30 марта 2019

Я пытаюсь очистить и разобрать адреса и не получаю результаты анализа между двумя запросами, использующими одно и то же расширение "address_standardizer". В моем основном запросе были проанализированы только определенные города. Государство и почтовый индекс в порядке. Однако, тестируя, чтобы понять, почему в большинстве городов не хватает, я вижу города в тестовом запросе.

Я использую тот же базовый запрос здесь , измененный как:

SELECT city, (a).num, (a).street, (a).city, (a).state, (a).zip, (a).zipplus
FROM (SELECT city, parse_address(city) As a
 from add_data
where city ~ ', *\D\D \d{5}$') AS p;

В результате:

city                    |num|street |city|state |zip  |zipplus
HONOLULU, HI 96819      |   |       |    |HI    |96819|
NEW YORK, NY 10018      |   |       |    |NY    |10018|
NEWHALL, CA 91321       |   |       |    |CA    |91321|
LONG BEACH, CA 90815    |   |       |    |CA    |90815|
LYNNFIELD, MA 01940     |   |       |    |MA    |01940|
CHATTANOOGA, TN 37407   |   |       |    |TN    |37407|

Итак, я проверил:

select city, parse_address(city) as cty
from add_data
where city ~ ', *\D\D \d{5}$';

Что дает мне ожидаемый разбор города, штата и почтового индекса:

city                        |cty
BEVERLY HILLS, CA 90213     |(,,,"BEVERLY HILLS",,CA,90213,""US)
OXNARD, CA 93031            |(,,,"OXNARD",,CA|93031,""US)
STREETSBOSO, OH 44241       |(,,,"STREETSBOSO",,OH,44241,""US)
OMAHA, NE 68114             |(,,,"OMAHA",,NE,68114,""US)
CHATTANOOGA, TN 37401       |(,,,"CHATTANOOGA",,TN,37401,""US)
CUYAHOCA HEIGHTS, OH 44125  |(,,,"CUYAHOCA HEIGHTS",,OH,44125,""US)

Я не уверен, где я нахожусь в моем запросе, чтобы потерять анализируемый город, пока он все еще обрабатывает состояние и почтовые индексы. Как бы я переписал запрос, чтобы получить правильные проанализированные результаты?

1 Ответ

0 голосов
/ 31 марта 2019

parse_address ожидает полного ввода или некоторых признаков того, что части адреса отсутствуют.

Во-первых, это помогает отобразить имена выходных столбцов: мы видим, что город не анализируется, как в столбце address1, который представляет собой агрегирование информации об улицах.

select (parse_address('BEVERLY HILLS, CA 90213')).*;
 num | street | street2 |   address1    | city | state |  zip  | zipplus | country
-----+--------+---------+---------------+------+-------+-------+---------+---------
     |        |         | BEVERLY HILLS |      | CA    | 90213 |         | US
(1 row)

Если мы добавим информацию об улице, тогда город будет правильно определен.

select (parse_address('123 ab street BEVERLY HILLS, CA 90213')).*;
 num |  street   | street2 |   address1    |     city      | state |  zip  | zipplus | country
-----+-----------+---------+---------------+---------------+-------+-------+---------+---------
 123 | ab street |         | 123 ab street | BEVERLY HILLS | CA    | 90213 |         | US
(1 row)

Чтобы правильно проанализировать название города по адресу, который не содержит улицу, вам нужно явно указать, что информация об улице отсутствует, добавив начальную запятую.

select (parse_address(',BEVERLY HILLS, CA 90213')).*;
 num | street | street2 | address1 |     city      | state |  zip  | zipplus | country
-----+--------+---------+----------+---------------+-------+-------+---------+---------
     |        |         |          | BEVERLY HILLS | CA    | 90213 |         | US
(1 row)

Обратите внимание, что добавление запятой между улицей и городом также требуется для нестандартного типа улицы или сложных случаев:

select (parse_address('123 ab MystreetType BEVERLY HILLS, CA 90213')).*;
 num |         street          | street2 |          address1           | city  | state |  zip  | zipplus | country
-----+-------------------------+---------+-----------------------------+-------+-------+-------+---------+---------
 123 | ab MystreetType BEVERLY |         | 123 ab MystreetType BEVERLY | HILLS | CA    | 90213 |         | US
(1 row)


select (parse_address('123 ab MystreetType, BEVERLY HILLS, CA 90213')).*;
 num |     street      | street2 |      address1       |     city      | state |  zip  | zipplus | country
-----+-----------------+---------+---------------------+---------------+-------+-------+---------+---------
 123 | ab MystreetType |         | 123 ab MystreetType | BEVERLY HILLS | CA    | 90213 |         | US
...