Стратегия управления разделами
Я выполняю некоторую работу по PoC с секционированием таблиц в хранилище данных SQL Azure. Я прочитал доступную документацию о разбиении таблиц ( https://docs.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-tables-partition) несколько раз, но у меня немного проблемы придумать полную стратегию для решения моей проблемы, которая, кажется, будет распространена.
В моей ситуации я, по сути, хочу раздел для каждого уникального значения в столбце раздела - назовем его Date. У меня появятся новые значения, которые появятся со временем (требуются новые разделы), и мне также понадобится заменять содержимое одного или нескольких разделов несколько раз в день, минимизируя потенциальное влияние на пользователей. Я следовал разделу "Управление исходным кодом разделения таблиц" в качестве стратегии для начальной настройки раздела. Я думаю, что необходимость замены некоторых разделов несколько раз в день означает, что мне нужна одинаковая / пустая промежуточная таблица, которую я могу очистить / загрузить, а затем использовать обмен разделами. Вот некоторые элементы стратегии, которые, по моему мнению, мне не хватает (я знаю, что здесь есть несколько вопросов - я их объединяю, если в этом есть некий всеобъемлющий аспект, которого мне не хватает):
Поскольку я обрабатываю данные для новых значений Date, как я могу проверить, есть ли у меня раздел для этого значения? Просто сделайте SPLIT RANGE и проглотите ошибку "добавляемое граничное значение уже присутствует", если это произойдет?
При загрузке промежуточной таблицы, после того как я подтвердил, что раздел для даты, которую я обрабатываю, существует, я услышал, что наиболее эффективная вещь для очистки раздела - это УДАЛИТЬ раздел (в отличие от удаления...where date=''), чтобы избежать регистрации транзакций... Я вижу документированный синтаксис этого для SQL, но не для хранилища данных SQL?
Я вижу синтаксис для перестановки разделов - кажется, требуется, чтобы вы знали номер раздела, который нужно поменять местами. Как вы узнаете, что такое номер раздела Date X (я вижу некоторые связанные с разделами представления, но не могу точно определить, как вы получаете partion_number, имя и значение таблицы)?