- Вопрос или проблема
- Текущая настройка:
- Желаемые изменения:
- Цель:
- Ответ или решение
- Обновление Microsoft List с использованием Power Automate для получения максимальных значений столбца из CSV без дубликатов
- Текущая конфигурация потока
- Желаемая модификация потока
- 1. Инициализация переменных
- 2. Применение цикла "Для каждого" (CSV Rows)
- 3. Получение элементов
- 4. Проверка существования записей
- Условие: Существует ли элемент?
- Условие: BestItemID больше 0?
- 5. Итоговая структура
- Заключение
Вопрос или проблема
У меня есть список Microsoft, который обновляется с помощью Power Automate. Когда создается или изменяется файл CSV, срабатывает поток, чтобы проверить, существует ли уже соответствующая запись. Если да, поток обновляет существующую запись; если нет, он создает новую запись.
введите описание изображения здесь
Текущая настройка:
В моем Get Items я использую фильтр запроса: Title eq ‘concat(items(‘Apply_to_each’)[‘X’], ‘|’, items(‘Apply_to_each’)[‘Y’])’
В моем условии я проверяю, если длина возвращаемых элементов больше нуля: length(outputs(‘Get_items’)?[‘body/value’]) is greater than 0
Желаемые изменения:
Я хочу изменить свой поток, чтобы обновлять или создавать записи на основе другого столбца (назовем его Столбец Z). Учитывая следующие образцы данных из моего CSV:
Столбец X | Столбец Y | Столбец Z |
---|---|---|
123456 | 10 | 456789 |
123456 | 10 | 456789 |
123456 | 10 | 789456 |
789456 | 30 | 852047 |
Цель:
Я хочу, чтобы мой поток создавал две записи в списке Microsoft, так как есть только два уникальных заголовка. Если запись уже существует, она должна обновляться на основе наибольшего значения в Столбце Z.
Столбец X | Столбец Y | Столбец Z |
---|---|---|
123456 | 10 | 789456 |
789456 | 30 | 852047 |
Я пытался изменить поток следующим образом:
Инициализация переменных
- CurrentItemTitle (Строка)
- CurrentDelivery (Целое число)
- BestItemID (Целое число)
- BestMatchDelivery (Целое число)
Применить ко всем (Строки CSV)
- Установить CurrentItemTitle
- Установить CurrentDelivery
- Получить элементы
- Условие: Проверить, существуют ли элементы
- Если Да:
- Применить ко всем (Существующие элементы)
- Условие: Проверить, если Delivery > BestMatchDelivery
- Если Да:
- Установить BestMatchDelivery
- Установить BestItemID
- Если Нет: Ничего не делать
- Если Да:
- Условие: Проверить, если Delivery > BestMatchDelivery
- Применить ко всем (Существующие элементы)
- Если Нет: Ничего не делать
- Если Да:
Условие: Проверить, если BestItemID > 0
- Если Да: Обновить элемент в списке
- Если Нет: Создать новый элемент в списке
Ответ или решение
Обновление Microsoft List с использованием Power Automate для получения максимальных значений столбца из CSV без дубликатов
Ваша задача — использовать Power Automate для обновления Microsoft List на основе данных из CSV-файла, следуя принципам, касающимся уникальности записей и максимальных значений в определенном столбце. Рассмотрим, как оптимизировать существующий поток для достижения этой цели.
Текущая конфигурация потока
На данном этапе вы уже создали поток, который срабатывает при создании или изменении CSV-файла. Этот поток выполняет следующие действия:
- Соединение с CSV-файлом и извлечение данных.
- Получение элементов Microsoft List с использованием фильтрации по заголовку.
- Проверка существования записей и их обновление или создание.
Желаемая модификация потока
Для достижения поставленной цели, необходимо учесть уникальные записи и обновлять значения в списке на основе максимального значения столбца Z. Мы предложим вам организацию потоков и поэтапные шаги для выполнения данного процесса.
1. Инициализация переменных
Вначале создайте переменные для хранения значений, которые будут использоваться в потоке:
- CurrentItemTitle (String): для хранения текущего заголовка, сформированного из столбцов X и Y.
- CurrentDelivery (Integer): для хранения значения, соответствующего столбцу Z.
- BestItemID (Integer): для хранения идентификатора записи с наибольшим значением столбца Z.
- BestMatchDelivery (Integer): для хранения наибольшего значения, найденного в процессе.
2. Применение цикла "Для каждого" (CSV Rows)
Переберите строки из CSV:
-
Установите CurrentItemTitle: задайте заголовок, объединяя значения из столбцов X и Y.
CurrentItemTitle = concat(items('Apply_to_each')['X'], '|', items('Apply_to_each')['Y'])
-
Установите CurrentDelivery: присвойте значение из столбца Z текущему элементу.
3. Получение элементов
Используйте действие Get Items с фильтом, чтобы получить записи, соответствующие текущему заголовку:
Filter Query: Title eq 'CurrentItemTitle'
4. Проверка существования записей
Условие: Существует ли элемент?
Если запись найдена, выполните вложенный цикл Для каждого по всем полученным элементам:
-
Проверка: доставлено ли текущее значение больше BestMatchDelivery?
- Если да:
- Установите BestMatchDelivery: текущий элемент.
- Установите BestItemID: идентификатор текущего элемента.
Иначе оставьте значения без изменений.
Условие: BestItemID больше 0?
- Если да: обновите элемент списка с использованием BestItemID и BestMatchDelivery.
- Если нет: создайте новый элемент с использованием текущих значений.
5. Итоговая структура
Ваш поток Power Automate будет выглядеть следующим образом:
- Инициализация переменных.
- Применение цикла для обхода CSV-файла.
- Получение элементов из списка.
- Проверка существования элементов и обновление/создание новых записей.
Заключение
Данная модификация потока Power Automate позволит вам эффективно обновлять Microsoft List, избегая дубликатов и гарантируя, что для каждой уникальной записи будет установлено максимальное значение из столбца Z. Подобный подход не только оптимизирует ваш процесс обработки данных, но и обеспечивает точность и актуальность информации в вашем списке.
Следуя вышеуказанным рекомендациям, вы сможете достигнуть намеченных целей, упрощая процесс обработки данных и улучшая управление записями в Microsoft List.