Вопросы и ответы по Azure Synapse Link for Dataverse

В этой статье представлена информация по часто задаваемым вопросам об экспорте данных таблиц Microsoft Dataverse в Azure Synapse Analytics и Azure Data Lake.

Могу ли я вручную выполнять такие задачи, как создание, обновление, удаление или настройка политик автоматического удаления для файлов данных в подключенной службе хранилища Azure?

Файлы данных не должны изменяться клиентом, и никакие файлы клиентов не должны помещаться в папки данных.

Примечание

Чтобы удалить устаревшие и инертные данные из озера данных без нарушения ссылки Azure Synapse Link, воспользуйтесь функцией Запрос и анализ добавочных обновлений

Как получить доступ к своим отношениям таблицы?

Для доступа к отношениям "многие ко многим" отношение доступно в виде таблицы, которую можно выбрать на странице Добавить таблицы для новой ссылки и на странице Управление таблицами для уже существующей ссылки.

Примечание

Все данные отношения по умолчанию находятся в режиме "Только добавление", если они записаны в формате CSV.

Azure Synapse Link это бесплатная функция в Dataverse. Использование Azure Synapse Link for Dataverse не влечет за собой дополнительных расходов в Dataverse. Однако учтите потенциальные затраты на использование службы Azure:

Что происходит, когда я добавляю столбец?

Когда вы добавляете новый столбец в таблицу в источнике, он также добавляется в конец файла в месте назначения в соответствующем разделе файла. В то время как строки, которые существовали до добавления столбца, не отображаются в новом столбце, в новых или обновленных строках отображается только что добавленный столбец.

Что происходит, когда я удаляю столбец?

Когда вы удаляете столбец из таблицы в источнике, столбец не удаляется из места назначения. Вместо этого строки больше не обновляются и помечаются как NULL, но с сохранением предыдущих строк.

Что произойдет, если я изменю тип данных столбца?

Изменение типа данных столбца является критическим изменением, и вам требуется отменить связь и установить ее заново.

Что происходит, когда я удаляю строку?

Удаление строки обрабатывается по-разному в зависимости от того, какие параметры записи данных вы выбрали:

  • Обновление на месте в формате CSV: это режим по умолчанию. Когда вы удаляете строку таблицы в этом режиме, строка также удаляется из соответствующего раздела данных в Azure Data Lake. Другими словами, данные безвозвратно удаляются из места назначения.
  • Только добавление с форматом CSV и добавочным обновлением папок. В этом режиме когда строка таблицы Dataverse удаляется, она не удаляется физически из места назначения. Вместо этого добавляется строка в файл и для нее устанавливается значение isDeleted=True в соответствующем разделе данных в Azure Data Lake.
  • При экспорте в формат Delta Lake: Azure Synapse Link выполняется обратимое удаление данных во время следующего цикла дельта-синхронизации, а затем необратимое удаление через 30 дней.

Почему я не вижу заголовка столбца в экспортированном файле?

Azure Synapse Link следует модели Common Data Model, чтобы сделать возможным общий доступ к данным и их значению для всех приложений и бизнес-процессов, таких как Microsoft Power Apps, Power BI, Dynamics 365 и Azure. В каждой папке CDM метаданные, такие как заголовок столбца, хранятся в файле model.json. Для получения дополнительных сведений см. раздел: Common Data Model и Azure Data Lake Storage 2-го поколения | Microsoft Learn

Почему в файле Model.json увеличивается или меняется длина для типов данных и не сохраняется то, что определено в Dataverse?

В Model.json сохраняется длина базы данных для размера столбца. В Dataverse существует понятие длины базы данных для каждого столбца. Если вы создадите столбец размером 200, а затем уменьшите его до 100, Dataverse все равно разрешит вашим существующим данным присутствовать в Dataverse . Это достигается путем сохранения значения параметра DBLength на уровне 200, а параметраMaxLength на уровне 100. В Model.json вы видите DBLength, и если вы используете его для нисходящих процессов, вы никогда не выделяете меньше места для своих столбцов Dataverse.

Примечание

Поля MEMO определяются как varchar(max) с максимальной длиной по умолчанию 9999.

Какие форматы даты и времени можно ожидать в экспортируемых таблицах Dataverse?

Есть три формата даты и времени, которые можно ожидать в экспортируемых таблицах Dataverse.

Имя столбца Формат. Тип данных Пример
SinkCreatedOn и SinkModifiedOn M/d/yyyy H:mm:ss tt datetime 6/28/2021 4:34:35 PM
CreatedOn yyyy-MM-dd'T'HH:mm:ss.sssssssXXX datetimeOffset 2018-05-25T16:21:09.0000000+00:00
Все другие столбцы yyyy-MM-dd'T'HH:mm:ss'Z' datetime 2021-06-25T16:21:12Z

Примечание

Тип данных CreatedOn изменен с datetime на datetimeOffset 29.07.2022. Чтобы отредактировать формат типа данных для таблицы, созданной до изменения, отбросьте и снова добавьте таблицу.

Для столбца даты и времени в Dataverse можно выбирать различные варианты поведения, что обновляет формат типа данных. Дополнительные сведения: Поведение и формат столбца "Дата и время"

Почему для некоторых таблиц Dataverse я вижу имена файлов 1.csv или 1_001.csv вместо обычных имен файлов, разделенных по дате и времени?

Такое поведение ожидается, если вы выбираете режим экспорта "только добавление" и имеете таблицы без допустимого столбца CreatedOn. BLOB-объекты организованы в такие файлы, как 1.csv, 2.csv (с использованием специального секционирования из-за отсутствия допустимой даты создания). Когда размер любого раздела приближается к 95 % от MaxBlockPerBlobLimit, система автоматически создает новый файл, показанный здесь как 1_001.csv.

Когда мне следует использовать годовую или ежемесячную стратегию разделения?

Для таблиц Dataverse, объем данных которых в течение года велик, рекомендуется использовать ежемесячные разделы. Это приведет к уменьшению размера файлов и повышению производительности. Кроме того, если строки в таблицах Dataverse часто обновляются, разделение на несколько файлов меньшего размера помогает повысить производительность в случае сценариев обновления на месте. Delta Lake доступен только с ежегодным разделением из-за его более высокой производительности по сравнению с форматом CSV.

Что такое режим «только добавление» и в чем разница между режимом «только добавление» и режимом «обновление на месте»?

В режиме «только добавление» инкрементальные данные из таблиц Dataverse добавляются к соответствующей секции файла в озере. Дополнительные сведения: Дополнительные параметры конфигурации в Azure Synapse Link

Когда использовать режим «только добавление» для просмотра истории изменений?

Режим "Только добавление" — рекомендуемый вариант для записи данных таблиц Dataverse в озеро, особенно когда объемы данных велики в разделе с часто изменяющимися данными. Опять же, это часто используемый и настоятельно рекомендуемый вариант для корпоративных клиентов. Кроме того, вы можете использовать этот режим для сценариев, в которых целью является инкрементный просмотр изменений из Dataverse и обработка изменений для сценариев ETL, ИИ и ML. Режим "Только добавление" предоставляет историю изменений вместо последнего изменения или обновления на месте и включает несколько временных рядов из сценариев ИИ, таких как прогноз или прогнозная аналитика на основе исторических значений.

Как извлечь самую актуальную строку каждой записи и исключить удаленные строки при экспорте данных в режиме «только добавление»?

В режиме "только добавление" вам следует определить последнюю версию записи с тем же идентификатором, используя VersionNumber и SinkModifiedOn, а затем применить isDeleted=0 к последней версии.

Почему я вижу повторяющиеся номера версий при экспорте данных в режиме «только добавление»?

Для режима «только добавление», если Azure Synapse Link for Dataverse не получает подтверждения от озера данных Azure о том, что данные были зафиксированы, по какой-либо причине (например, из-за задержек в сети), Azure Synapse Link повторяет попытку и снова фиксирует данные. Потребление на нижестоящих этапах должно быть устойчивым к этому сценарию путем фильтрации данных с помощью SinkModifiedOn.

Почему я вижу различия в столбцах Sinkmodifiedon и Modifiedon?

Это ожидаемо. Modifiedon — дата и время изменения записи в Dataverse; Sinkmodifiedon — дата и время изменения записи в озере данных.

Какие таблицы Dataverse не поддерживаются для экспорта?

Любая таблица, для которой не включено отслеживание изменений, не поддерживается в дополнение к следующим системным таблицам:

  • Вложение
  • Календарь
  • Calendarrule

Примечание

Вы можете добавить таблицу аудита для экспорта, используя Azure Synapse Link for Dataverse. Однако экспорт таблицы аудита поддерживается только с профилями Delta Lake.

Я использую функцию экспорта в Delta Lake. Могу ли я остановить задание Apache Spark или изменить время выполнения?

Задание преобразования Delta Lake запускается при изменении данных в настроенном интервале времени. Нет возможности остановить или приостановить работу пула Apache Spark. Однако вы можете изменить временной интервал после создания связи в разделе "Управление таблицами > Расширенный временной интервал".

Столбцы подстановки состоят из идентификатора и значения. Значения подстановки изменяются только в корневой таблице. Чтобы лучше отразить значение столбца подстановки, мы рекомендуем объединение с исходной корневой таблицей, чтобы получить последнее значение.

В Dataverse вычисляемые столбцы сохраняют только информацию о формуле, а реальное значение зависит от столбца базовой таблицы. Таким образом, вычисляемые столбцы поддерживаются только в том случае, если все столбцы расположены в одной экспортированной таблице.

Для каких таблиц Dataverse по умолчанию используется режим «только добавление»?

Все таблицы, в которых нет поля createdOn, по умолчанию синхронизируются в режиме "только добавление". Сюда входят таблицы отношений и таблица ActivityParty.

Почему я вижу сообщение об ошибке "Невозможно вывести содержимое каталога по пути"?

  • Данные Dataverse хранятся в подключенном контейнере хранения. Для выполнения операций чтения и запроса через Synapse Workspace вам нужна роль «Участник данных хранилища BLOB-объектов» в связанной учетной записи хранения.
  • Если вы решите экспортировать данные в формате Delta Lake, ваш файл CSV будет очищен после преобразования Delta Lake. Вам необходимо запросить данные с помощью неразделенных таблиц через Synapse Workspace.

Почему я вижу сообщение об ошибке "Массовая загрузка невозможна, так как файл неполный или не может быть прочитан (только CSV-файл)"?

Данные Dataverse могут непрерывно изменяться путем создания, обновления и удаления транзакций. Эта ошибка вызвана изменением базового файла при чтении из него данных. Таким образом, для таблиц с непрерывными изменениями измените свой конвейер потребления, чтобы использовать данные моментальных снимков (секционированные таблицы) для потребления. Дополнительная информация: Устранение неполадок бессерверного пула SQL

Azure Synapse Link for Dataverse предназначен для аналитических целей. Мы рекомендуем клиентам использовать долгосрочное хранение в целях архивирования. Подробнее: Обзор долгосрочного хранения данных Dataverse

Почему я не вижу никаких изменений данных в озере данных, когда записи были удалены в Dataverse?

При любом прямом вызове SQL для удаления записи служба Azure Synapse Link for Dataverse не запускается, поскольку не вызывается BPO.Delete. Пример функции см. в разделе Как очистить унаследованный доступ.