Основные расходы Snowpipe основаны на вычислительном времени, используемом для выполнения загрузки. Для большого количества небольших файлов накладные расходы, связанные с выполнением инструкции полной загрузки для каждого файла (обнаружение, открытие, чтение / анализ, вставка, закрытие, следующий), могут вырасти до очень значительного значения потраченного впустую времени вычислений, которое в противном случае было бы потрачено на фактическое чтение данных. и вставляет.
Кроме того, накладные расходы связаны с количеством файлов напрямую:
Помимо потребления ресурсов, накладные расходы включены в стоимость использования Snowpipe: 0,06 кредита на 1000 файлов, о которых сообщается или указывается в уведомлениях о событиях или вызовах REST API. Эти накладные расходы взимаются независимо от того, привели ли уведомления о событиях или вызовы REST API к загрузке данных.
Для ~ 5 миллионов файлов это ~ 300 кредитов на плату за использование при использовании Snowpipe, помимо фактических вычислений. кредиты.
Что-нибудь я могу сделать, чтобы снизить стоимость здесь? Может быть, предварительно обработать XML в один файл?
Предварительная обработка файлов на более крупные части, безусловно, хорошая идея. Snowflake поддерживает чтение каждого root XML узла как отдельной строки , поэтому объединение данных XML в файлы большего размера примерно 100 МБ каждый может помочь им загружаться быстрее и дешевле.
Имейте в виду, что ни одна отдельная XML строка документа не может превышать 16 МБ .
Примечание : если это будет один time, и большая потребность в том, чтобы файлы были загружены, чтобы в ближайшее время начать использовать Snowflake, тогда я бы рекомендовал загрузить их как есть, поскольку вы упомянули, что корзина уже подготовлена. Вы можете использовать подход слияния для будущих повторов.