Отображение IP-адреса с использованием su bnet и таблицы поиска vlan - PullRequest
0 голосов
/ 25 января 2020

Я поднял аналогичный вопрос в другой публикации здесь Проверьте и сопоставьте IP-адрес с таблицей поиска su bnet с помощью SQL, но после просмотра результатов я понимаю, что ситуация была несколько более сложной; следовательно, это было частично ответ. Я столкнулся с проблемой, когда многие пользователи были неправильно идентифицированы из-за несоответствия VLAN, которое изначально не рассматривалось; поэтому я публикую здесь еще один вопрос с чуть более подробным описанием проблемы:

У меня есть таблица, в которой показаны IP-адреса, назначенные оборудованию, принадлежащему клиенту. Эта таблица используется для измерения активности и производительности пользователя и генерируется на регулярной основе. Таблица имеет IP-адрес и поле VLAN, среди других полей. Допустим, это таблица А. Стоит отметить, что одному и тому же оборудованию или клиенту может быть назначено несколько IP-адресов. Эта таблица А не имеет имени-клиента, поэтому я хотел бы сопоставить IP-адрес каждого клиента в этой таблице с имя клиента или идентификатор клиента, который находится в таблице B (справочная таблица). По некоторым причинам в справочной таблице B вместо отдельных IP-адресов используется su bnet.

Следует отметить, что сопоставление должно соответствовать двум критериям, а не просто сопоставлению IP один на один на основе su bnet. И IP-адрес, и VLAN в таблице A должны совпадать как с su bnet, так и с VLAN в справочной таблице B, а не только с диапазоном IP-адресов в пределах su bnet в таблице B. Причина заключается в том, чтобы просто избежать неправильного совпадения, поскольку таблица A может иметь IP-адрес в пределах того же su bnet в таблице B, но в другой VLAN, поэтому объединение должно основываться на этих двух ключах.

Таблица A имеет поля примерно такие:

timestamp, IP-адрес, VLAN, метрики .... Пример ниже:

enter image description here

Пример таблицы поиска B выглядит примерно так:

+-------------+------+-------------------+
| Customer_ID | VLAN |      Subnet       |
+-------------+------+-------------------+
| HARRIS      | 1012 | 10.111.253.46/32  |
| HARRIS      | 1012 | 10.164.20.49/30   |
| HARRIS      | 1012 | 10.223.165.193/28 |
| HARRIS      | 1013 | 10.155.75.128/26  |
| HARRIS      | 1014 | 10.155.75.128/26  |
| HARRIS      | 1330 | 10.121.30.192/27  |
| HARRIS      | 1331 | 10.120.30.192/27  |
| HARRIS      | 1332 | 10.122.30.192/27  |
| HARRIS      | 3910 | 100.104.12.144/32 |
| HARRIS      | 3927 | 10.70.24.233/32   |
| HARRIS      | 3959 | 10.102.11.182/32  |
| HARRIS      | 3966 | 10.98.11.170/32   |
| STEPHANIE   | 1010 | 100.72.0.33/32    |
| STEPHANIE   | 3896 | 10.96.11.169/29   |
| JOE         | 1010 | 100.69.72.10/32   |
| NED         | 1010 | 100.72.255.2/32   |
| ESTHER      | 1010 | 100.72.255.66/32  |
| BEN         | 1010 | 100.72.255.30/32  |
| SHAWN       | 1010 | 100.72.254.230/32 |
| JACK        | 1010 | 1.1.1.7/32        |
| TONY        | 1010 | 100.72.255.242/32 |
| Robert      | 1010 | 100.72.254.250/32 |
| Nita        | 1010 | 100.72.254.186/32 |
| Omar        | 1010 | 100.72.254.238/32 |
| Costco      | 1010 | 100.72.255.182/32 |
| Walmart     | 1010 | 1.1.1.2/32        |
| Navy_blue   | 1010 | 100.72.255.82/32  |
| Jet Rider   | 1010 | 100.72.254.30/32  |
| Falcon      | 1010 | 1.1.1.1/32        |
| Silver      | 1010 | 100.80.255.174/32 |
| Morton Ranch| 1010 | 100.72.255.18/32  |
| 335553412   | 1010 | 100.72.255.22/32  |
| 335553413   | 1010 | 100.72.255.253/32 |
| 335553414   | 1010 | 100.72.255.222/32 |
| 335553415   | 1010 | 100.72.255.202/32 |
| 335553416   | 1010 | 100.72.255.210/32 |
| 335553417   | 1010 | 100.72.255.10/32  |
| 335553418   | 1010 | 100.72.255.218/32 |
| 335553419   | 1010 | 100.72.255.206/32 |
| 335553420   | 1010 | 100.72.255.14/32  |
| 335553421   | 1010 | 100.72.255.114/32 |
| 335553431   | 1010 | 100.72.255.166/32 |
| 335553632   | 1010 | 100.72.4.176/32   |
| 335553632   | 3898 | 10.98.0.49/28     |
| RANDY       |  100 | 100.72.5.6/32     |
| RANDY       | 1012 | 10.111.230.41/32  |
| RANDY       | 1012 | 10.164.31.185/30  |
| RANDY       | 1012 | 10.228.5.1/28     |
| RANDY       | 1013 | 10.154.10.0/26    |
| RANDY       | 1014 | 10.154.10.0/26    |
| HASAN       | 1015 | 100.72.8.94/32    |
| HASAN       | 1015 | 100.73.13.56/32   |
| HASAN       | 3910 | 100.104.3.66/32   |
| HASAN       | 3927 | 10.70.7.157/32    |
| HASAN       | 3959 | 10.102.1.228/32   |
| HASAN       | 3966 | 10.98.2.68/32     |
| DICKY       |  100 | 100.72.10.203/32  |
| DICKY       | 3897 | 1.1.1.1/29        |
| RINA        |  100 | 100.73.2.12/32    |
| RINA        | 1430 | 10.64.9.0/27      |
| RINA        | 3910 | 100.104.2.12/32   |
| RINA        | 3927 | 10.70.2.155/32    |
| RINA        | 3959 | 10.102.1.15/32    |
| RINA        | 3959 | 10.104.8.24/29    |
| RINA        | 3966 | 10.98.1.13/32     |
+-------------+------+-------------------+

Ожидаемая выходная таблица выглядит примерно так:

отметка времени, IP-адрес, VLAN, su bnet, customer_name, метрики ....

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

Спасибо за помощь!

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