Объединение двух запросов без дублирования строк в Power Query - PullRequest
1 голос
/ 24 марта 2020

Я пытаюсь объединить два запроса, используя один столбец (который содержит одинаковые значения, хотя одинаковое количество дубликатов для одинаковых значений в обоих запросах) в качестве ключа; но всякий раз, когда я расширяю объединенную таблицу, все строки получают двойные дубликаты.

Я не являюсь экспертом в Power Query, и я пробовал несколько вещей, в том числе различные способы соединения (left, full, right и др. c.), И результат всегда одинаков.

Настройка выглядит следующим образом:

Таблица запросов 1:

|   Name  |Extension|Folder Path  |Product Name|Destination Path|
|File1.jpg|   .jpg  |c:/someroute/|  ProductA  |  c:/otherpath/ |
|File2.jpg|   .jpg  |c:/someroute/|  ProductA  |  c:/otherpath/ |
|File4.jpg|   .jpg  |c:/someroute/|  ProductB  |  c:/otherpath/ |
|File3.jpg|   .jpg  |c:/someroute/|  ProductC  |  c:/otherpath/ |
|File8.jpg|   .jpg  |c:/someroute/|  ProductC  |  c:/otherpath/ |
|File9.jpg|   .jpg  |c:/someroute/|  ProductC  |  c:/otherpath/ |

Таблица запросов 2:

|productid|productSKU|Product Name|                    ImageIDs                  |
|   0001  | sku0001  |  ProductA  |          productA-1.jpg, productA-2.jpg      |
|   0002  | sku0002  |  ProductB  |                  productB-1.jpg              |
|   0003  | sku0003  |  ProductC  |productC-1.jpg, productc-2.jpg, productc-3.jpg|

Желаемый вывод (я построение динамической c функции переименования для переименования всех файлов с именами идентификаторов изображений:

|   Name  |Extension|Folder Path  |Product Name|Destination Path|    ImageID    |
|File1.jpg|   .jpg  |c:/someroute/|  ProductA  |  c:/otherpath/ | productA-1.jpg|
|File2.jpg|   .jpg  |c:/someroute/|  ProductA  |  c:/otherpath/ | productA-2.jpg|
|File4.jpg|   .jpg  |c:/someroute/|  ProductB  |  c:/otherpath/ | productB-1.jpg|
|File3.jpg|   .jpg  |c:/someroute/|  ProductC  |  c:/otherpath/ | productC-1.jpg|
|File8.jpg|   .jpg  |c:/someroute/|  ProductC  |  c:/otherpath/ | productC-2.jpg|
|File9.jpg|   .jpg  |c:/someroute/|  ProductC  |  c:/otherpath/ | productC-3.jpg|

Короче говоря, я безуспешно пытался:

  • Разделить идентификаторы изображений столбец в строки в запросе 2 -> затем объединить запросы, используя имя продукта в качестве ключа -> развернуть столбец ImageIDs в объединенном запросе.
  • создать третий запрос с уникальным именем продукта values ​​-> Объединить два других запроса с вновь созданными -> Развернуть нужные столбцы по необходимости.
  • Сначала объединить два запроса, используя Имя продукта в качестве ключа -> Затем развернуть столбец ImageIDs в объединенном запросе -> разделить столбец ImageIDs на строки.
  • Сгруппируйте таблицу в запросе 1 по Имя продукта -> Объедините два запроса, используя Имя продукта как ключ (который теперь имеет только уникальные значения для каждого запроса) -> развернуть таблица имен в объединенном запросе.

Я предполагаю, что мне следует использовать какой-то столбец индекса, который подсчитывает дублирование значений в Название продукта , но на самом деле это не так Я знаю это, и я не понимаю, почему это не работает, но любой из вышеперечисленных вариантов выводит что-то вроде этого:

|   Name  |Extension|Folder Path  |Product Name|Destination Path|    ImageID    |
|File1.jpg|   .jpg  |c:/someroute/|  ProductA  |  c:/otherpath/ | productA-1.jpg|
|File1.jpg|   .jpg  |c:/someroute/|  ProductA  |  c:/otherpath/ | productA-2.jpg|
|File2.jpg|   .jpg  |c:/someroute/|  ProductA  |  c:/otherpath/ | productA-1.jpg|
|File2.jpg|   .jpg  |c:/someroute/|  ProductA  |  c:/otherpath/ | productA-2.jpg|
|File4.jpg|   .jpg  |c:/someroute/|  ProductB  |  c:/otherpath/ | productB-1.jpg|
|File3.jpg|   .jpg  |c:/someroute/|  ProductC  |  c:/otherpath/ | productC-1.jpg|
|File3.jpg|   .jpg  |c:/someroute/|  ProductC  |  c:/otherpath/ | productC-2.jpg|
|File3.jpg|   .jpg  |c:/someroute/|  ProductC  |  c:/otherpath/ | productC-3.jpg|
|File8.jpg|   .jpg  |c:/someroute/|  ProductC  |  c:/otherpath/ | productC-1.jpg|
|File8.jpg|   .jpg  |c:/someroute/|  ProductC  |  c:/otherpath/ | productC-2.jpg|
|File8.jpg|   .jpg  |c:/someroute/|  ProductC  |  c:/otherpath/ | productC-3.jpg|
|File9.jpg|   .jpg  |c:/someroute/|  ProductC  |  c:/otherpath/ | productC-1.jpg|
|File9.jpg|   .jpg  |c:/someroute/|  ProductC  |  c:/otherpath/ | productC-2.jpg|
|File9.jpg|   .jpg  |c:/someroute/|  ProductC  |  c:/otherpath/ | productC-3.jpg|

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

1 Ответ

2 голосов
/ 25 марта 2020

Столбцы индекса должны отсортировать это, предполагая, что Table 2 имеет то же количество строк, что и Table 1 после разделения ImageIDs на новые строки.

  1. Разверните Table 2 до новых строк.
  2. Сортировать расширенные Table 2 по Product Name и ImageId.
  3. Добавить индексный столбец к Table 2.
  4. Сортировать Table 1 по Product Name и Name.
  5. Добавить столбец индекса в Table 1.
  6. Объединить Table 2 в Table 1, используя сопоставляемые столбцы индекса.
  7. Развернуть ImageId столбец от Table 2.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...