Совмещение двух таблиц по двум полям

Автор HuDiK, октября 08, 2019, 12:42:18 am

« предыдущая - следующая »

HuDiK

октября 08, 2019, 12:42:18 am Последнее редактирование: октября 08, 2019, 12:46:15 am от HuDiK
Есть две таблицы которые нужно связать:

.Advertising_Bulksheet  и .KeyWords+KeyWords_position

Прямо они не связаны друг с другом никак
Чтобы их связать нужно еще загрузить три таблицы
•   .Catalog_company   
•   .Intersection_company_ASIN
•   .product

Как на скриншоте


Чтобы их связать я так понял нужно связать таблицу .Advertising_Bulksheet   с таблицами
•   .Catalog_company   
•   .Intersection_company_ASIN
•   .product

Но есть проблема что в таблице .product нам надо связать два поля с таблицей .Advertising_Bulksheet   


Основной_отчетПодготовка:
LOAD
    id as id,
    Campaign as Campaign,
    Keyword_or_Product_Targeting as Keyword_or_Product,
    IdAccount as IdAccount;
SQL SELECT *
FROM "AmazonFinance".stat.Advertising_Bulksheet;


Left Join (Основной_отчетПодготовка)
LOAD
    Iden as Iden,
    NameCompany as Campaign;
SQL SELECT *
FROM "AmazonFinance".stat.Catalog_company;

Left Join (Основной_отчетПодготовка)

LOAD
IdCompany as Iden,
IdASIN as IdASIN;

SQL SELECT *
FROM "AmazonFinance".stat.Intersection_company_ASIN;

Left Join (Основной_отчетПодготовка)
LOAD

id as IdASIN, 
IdAccount as IdAccount,   // в этой таблице так нельзя сделать
code as asinkeyword;

SQL SELECT *
FROM "AmazonFinance".stat.product;
Исходя из вышесказанного нам надо я так понимаю функция Applymap


А дальше получается, чтобы присоединить таблицу KeyWords
Нужно связать поля code и asin и сопоставить вместе поля Keyword_or_Product и keyword.

Важно понимать что на 1 asin много keyword. то есть в нем своеобразное подмножество и если поле keyword не находит для Keyword_or_Product, то тогда Keyword_or_Product  не нужны

Вот так я загружаю последнюю таблицу

Отчет_КлючевыеПодготовка:
LOAD
     id as idkeyword,
     asin as asinkeyword,
     keyword as keyword_report;
      SQL SELECT *
FROM "AmazonFinance".stat.KeyWords;

Join

LOAD
 id_keyword as idkeyword,
 date as date_keyword,
 page as page_keyword;

SQL SELECT *
FROM [AmazonFinance].[stat].[KeyWords_Position];





HuDiK


Uunit


HuDiK


HuDiK

нужно объеденить таблицу .Advertising_Bulksheet и  .product по трем полям
Я нашел тут пример последний как по двум полям это сделать http://blog.atkcg.ru/funkcii-tablic-sopostavleniya-applymap-chast-1/ с помощью ApplyMap

Uunit

Цитата: HuDiK от октября 11, 2019, 10:56:39 amнужно объеденить таблицу .Advertising_Bulksheet и  .product по трем полям
Нужно понимать, что содержат эти самые поля.
Допустим, у нас есть две таблицы.
Первая содержит информацию о Дате сделки, Продукт сделки и Специалисте который провёл её.
ПерваяТаблица:
Load
    ДатаСделки,
    Продукт,
    Специалист
From
...

Вторая таблица будет содержать информацию о Дате сделки, Продукте и сумме сделки.
ВтораяТаблица:
Load
    ДатаСделки,
    Продукт,
    СуммаСделки
From
...

В примере выше, объединять по дате или продукту по отдельности не выйдет.

Нам ничего не мешает сделать следующее:
ПерваяТаблица:
Load
    ДатаСделки,
    Продукт,
    Специалист,
    ДатаСделки&Продукт as Key
From
...

Left Join
Load
    ДатаСделки&Продукт as Key,
    СуммаСделки
From
...

Таким образом, под N столбцам, вы можете объединить всё что вам нужно.

HuDiK

Пока вроде бы получается. У меня вопрос тогда какая разница с функцией ApplyMap.