Обновление Dynamodb для нескольких элементов списка с несколькими значениями ключа - PullRequest
0 голосов
/ 29 января 2019

Мы обновляем данные в листе Excel для определенного идентификатора события. Нам нужно извлечь элемент первичного ключа из таблицы DynamodB для идентификатора конкретного события и нам нужно обновить значения в Excel.

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

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

следуйте приведенным ниже инструкциям, чтобы завершить обновление DynamodB

1. Мы прочитали и преобразовали исходные данные CSV в словарь

with open('test.csv', 'r') as f:   reader = csv.reader(f)   your_list
= list(reader) list_1=[] dict1={} for i in range(1, len(your_list)):
    dict1[your_list[0][0]]=your_list[i][0]
    dict1[your_list[0][1]]=your_list[i][1]
    dict1[your_list[0][2]]=your_list[i][2]
    dict1[your_list[0][3]]=your_list[i][3] list_1.append(dict1)
    dict1={}

Я не скопировал здесь полный скрипт, просто вставил одиннебольшой пакетный скрипт

2. При использовании операции сканирования DynamodB сравнил четность в источнике и месте назначения

Здесь мы столкнулись с проблемой повторного извлечения данных, в то время как мы можем получить 1 МБ данных в DynamodB * 1010.*

3.Мы проверили каждую запись пакета с таблицей DynamodB и завершили процесс обновления

0 голосов
/ 31 января 2019

Если вы спрашиваете о том, как автоматизировать это в Excel, то одним из вариантов является использование API-интерфейсов Office Interop для Excel с вашего любимого языка .NET (C # действительно легко использовать для такого рода задач).У Dynamo есть клиентские SDK для .NET, что также позволяет относительно легко запрашивать исходную таблицу.

Для .Net SDK для Dynamo начните здесь: https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/dynamodb-intro.html

Для автоматизации Office выесть две опции:

  1. Вы можете написать приложение .Net, которое будет взаимодействовать с Excel и обработать файл, читая из Dynamo
  2. Вы можете попробовать использовать функции автоматизации из Excel черезсценарии (но я не уверен, насколько хорошо это будет работать с внешней зависимостью от AWS SDK)

Для последнего вы можете начать здесь: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/interop/how-to-access-office-onterop-objects

Есть многопримеров для автоматизации Excel с использованием C #.Если вы обнаружите, что застряли на чем-то конкретном, не стесняйтесь спрашивать здесь о SO, но чем более сфокусирован этот вопрос, тем быстрее и лучше вы получите ответы.

Что касается подхода для вашего конкретного случаяЗадача, я бы:

  • создать консольное приложение, которое открывает документ Excel (рабочую книгу), который вы хотите редактировать
  • перечислите листы и выберите тот, который вам нужно обновить (предположительносначала?!)
  • , затем для каждой строки в таблице считайте четное значение из соответствующей ячейки
  • , сделайте запрос DynamoDB и получите данные, необходимые для этого события
  • обновить ячейки для этой строки
  • повторять это для всех строк, пока вы не закончите

В качестве потенциальной оптимизации, если в «Динамо» не так много записей(10 000 - довольно низкое число), я бы сначала посмотрел на сканирование таблицы «Динамо» в памяти, а затем выполнял поиск в памяти.Это имеет дополнительное преимущество, что это будет значительно дешевле.Сканирование всех 10 тыс. Элементов и хранение в памяти обычно обходится в 15-20 раз дешевле, чем выполнение отдельных запросов Get для каждого элемента.

...