koala
У вас є:
- сервер SnowFlake;
- безкоштовний сервер Google Cloud/Amazon Cloud, який ви хочете використовувати для перекодування;
- Google Drive.
Усе так?
Спершу клієнт (Databricks) витягує дані з Snowflake, передає дані POST-ріквестом в кастомну API котра хоститься на ec2 (з Google Cloud змігрував на ec2 оскільки компанія вирішила заплатити саме за ec2), API зберігає передане значення в файл csv і далі надсилає в Google Drive.
Бізнес-вимоги.
Може, проблема саме в виборі діалекту?
Проблеми вже нема. Було обмеження в кількості переданих API-ріквестом даних при використанні безкоштовного інстансу Google Cloud; це вирішилося шляхом міграції на платний ec2. Також була проблема з перенесенням стрічки якщо в одній комірці траплялися значення на декілька рядків - вирішено шляхом "лапкування" (див. нижче). Також була проблема коли в оригінальному значенні комірки траплявся символ подвійної лапки - вирішено ріплейсом подвійної лапки у дві "косі" лапки
https://replace.org.ua/post/154328/#p154328
доповнив код string.replace("\"","``") для автозаміни подвійних лапок на дві одинарні ``.
А в SnowFlake є внутрішній механізм експорту в CSV. Може, варто ним скористатися?
Це рішення розглядалося і було відкинене бізнес-користувачами
https://replace.org.ua/post/154338/#p154338
Був інший варіант - зберігати з snowflake напряму в S3, для цього є штатні засоби; однак для використання цього рішення користувачам потрібне додаткове ПЗ - S3 браузер; на презентації варіантів бізнес-користувачі обрали варіант із google drive.
Поки що тестую далі на більшій кількості різних csv, so far so good, якщо щось ще вилізе - буду фіксити.
ping
корисним буває правило "лапкувати" ВСІ значення при записі
Я так і роблю:
https://replace.org.ua/post/154326/#p154326
file_content = file_content + delimiter_symbol.join("\"" + str(z) + "\"" for z in x) + '''
'''
а саме - ось тут: