Как получить нужные данные из 3 таблиц в SQL-запросе Athena?

Таблица 1 (aws_complianceitem) не имеет первичного ключа, и этот образец данных:

положение дел строгость тип соответствия заголовок идентификатор ресурса область совместимый низкий безопасность патч 2002 года я-76765434 ап-юг-2 несоответствующий высокий аудит Патч 2002 КБ я-76765434 ап-юг-2 совместимый середина безопасность Патч 2002 КБ я-98765434 ап-юг-1

Таблица 2 (aws_instanceinformation) имеет ipaddress и instanceid в качестве уникальных ключей и содержит следующие примеры данных:

Имя компьютера instanceid айпи адрес положение дел идентификатор аккаунта SD-SDYH-re22 я-76765434 10.33.23.1 выполнено 887878787654 несоответствующий я-98765434 10.72.33.1 не соблюдается 098776765478

Таблица 3 (configinstancestate) имеет ipaddress и resourceid в качестве уникальных ключей и этот образец данных:

идентификатор ресурса айпи адрес состояние экземпляра я-76765434 10.33.23.1 бег я-98765434 10.72.33.1 остановился

Мне нужны данные со всеми запущенными экземплярами.

Это желаемый результат:

положение дел состояние экземпляра строгость заголовок идентификатор ресурса область айпи адрес совместимый бег низкий патч 2002 года я-76765434 ап-юг-2 10.33.23.1 несоответствующий бег высокий Патч 2002 КБ я-76765434 ап-юг-2 10.33.23.1 совместимый остановился середина Патч 2002 КБ я-98765434 ап-юг-1 10.72.33.1

Попробовал с полным внешним соединением с запросом ниже,

SELECT
    t1.status
    , t1.severity
    , t1.title
    , t1.region
    , t1.resourceid
    , t2.ipaddress
    , t2.computername
    , t2.status
    , t3.instancestate
FROM
    aws_complianceitem                      t1
    FULL OUTER JOIN aws_instanceinformation t2
        ON t1.resourceid = t2.instanceid
    FULL OUTER JOIN configinstancestate     t3
        ON t2.ipaddress = t3.resourceid

Но мы фильтруем этот результат, который мы получаем как часть этого запроса с instancestate=blank, имеет пустые записи

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
3
0
2 001
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Кажется, что два внутренних соединения - с соответствующими условиями - делают то, что вы хотите:

select ac.*, c.*
from aws_complianceitem ac
inner join aws_instanceinformation ai 
    on ai.resourceid = ac.resourceid
inner join configinstancestate c
    on c.resourceid = ac.resourceid and c.ipaddress = ac.ipaddress

Запросы этого типа не поддерживаются (Сервис: AmazonAthena; Код состояния: 400; Код ошибки: InvalidRequestException; Идентификатор запроса: xxxxxxxxxxxxxxxxxxxx-xxxxxxxxx-1xxxxxxxxxx) получение вышеуказанной ошибки в Athena с этим запросом

Gandhar khaladkar 18.12.2020 18:00

@Gandharkhaladkar: я только что исправил опечатку (в конце and). Сейчас работает лучше?

GMB 18.12.2020 18:05

Другие вопросы по теме