Рекомендации по сопоставлению полей для стандартных потоков данных

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

Контроль создания или обновления записей потоков данных при каждом обновлении

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

  • Создайте новые записи для каждого обновления потока данных, даже если такие записи уже существуют в целевой таблице.
  • Создайте новые записи, если они еще не существуют в таблице или обновите существующие записи, если они уже существуют в таблице. Это поведение называется upsert.

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

Ключевой столбец — это столбец, который является уникальным и детерминированным для строки данных в таблице. Например, в таблице "Заказы", если идентификатор заказа является ключевым столбцом, у вас не должно быть двух строк с одинаковым идентификатором заказа. Кроме того, один идентификатор заказа ( предположим, заказ с идентификатором 345) должен представлять только одну строку в таблице. Чтобы выбрать ключевой столбец таблицы в Dataverse из потока данных, необходимо задать ключевое поле в интерфейсе "Таблицы карт".

Выбор первичного имени и ключевого поля при создании новой таблицы

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

Первичный ключ и альтернативный ключ совпадают.

Первичное поле имени, которое отображается в сопоставлении полей, — это поле метки; Это поле не должно быть уникальным. Поле, используемое в таблице для проверки дублирования, — это поле, заданное в поле "Альтернативный ключ ".

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

Поле основного имени

Основное поле имени — это поле отображения, используемое в Dataverse. Это поле используется в представлениях по умолчанию для отображения содержимого таблицы в других приложениях. Это поле не является полем первичного ключа и не должно рассматриваться как это. Это поле может иметь повторяющиеся значения, так как это поле отображения. Наилучшей практикой, однако, является использование сцепленного поля для сопоставления с основным полем имени, чтобы имя становилось полностью понятным.

Альтернативное поле ключа — это то, что используется в качестве первичного ключа.

Выбор ключевого поля при загрузке в существующую таблицу

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

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

Выбор ключа для обновления и добавления данных в таблицы Dataverse.

Установка столбца уникального идентификатора таблицы и его использование в качестве ключевого поля для обновления и добавления записей в существующие таблицы Dataverse

Все строки таблицы Microsoft Dataverse имеют уникальные идентификаторы (GUID). Эти идентификаторы GUID являются первичным ключом для каждой таблицы. По умолчанию первичный ключ таблицы не может быть задан потоками данных и автоматически создается Dataverse при создании записи. Существуют расширенные варианты использования, когда использование первичного ключа таблицы желательно, например, интеграция данных с внешними источниками при сохранении одинаковых значений первичного ключа как во внешней таблице, так и в таблице Dataverse.

Замечание

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

Чтобы воспользоваться уникальным полем идентификатора таблицы, выберите "Загрузить в существующую таблицу " на странице "Таблицы карт " при создании потока данных. В примере, показанном на следующем изображении, он загружает данные в таблицу CustomerTransactions и использует столбец TransactionID из источника данных в качестве уникального идентификатора таблицы.

Обратите внимание, что в раскрывающемся списке "Выбор ключа " можно выбрать уникальный идентификатор ( который всегда называется tablename + id) таблицы. Так как имя таблицы — CustomerTransactions, поле уникального идентификатора называется CustomerTransactionId.

Выбор первичного ключа для обновления и вставки данных в таблицы Dataverse.

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

Сопоставление данных с столбцом уникального идентификатора.

Что такое хорошие кандидаты на ключевое поле

Поле ключа — это уникальное значение, представляющее уникальную строку в таблице. Важно иметь это поле, так как это помогает избежать дублирования записей в таблице. Это поле может поступать из трех источников:

  • Первичный ключ в исходной системе (например, OrderID в предыдущем примере). сцепленное поле, созданное с помощью преобразований Power Query в потоке данных.

    Объединение столбцов для создания сцепленного уникального столбца.

  • Сочетание полей, выбранных в параметре "Альтернативный ключ ". Сочетание полей, используемых в качестве ключевого поля, также называется составным ключом.

    Создание составного ключа с помощью сопоставления полей.

Удаление строк, которые больше не существуют

Если вы хотите, чтобы данные в таблице всегда синхронизировались с данными из исходной системы, выберите параметр Delete rows, которые больше не существуют в выходных данных запроса. Однако этот параметр замедляет поток данных, так как для этого действия требуется сравнение строк на основе первичного ключа (альтернативный ключ в сопоставлении полей потока данных).

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

Удаление строк, которые больше не существуют.

Замечание

Потоки данных стандарта версии 2 опираются на поля createdon и modifiedon для удаления строк, которые не существуют в выходных данных потоков данных, из целевой таблицы. Если эти столбцы не существуют в целевой таблице, записи не удаляются.

Известные ограничения

  • Сопоставление с полиморфными полями поиска в настоящее время не поддерживается.
  • Сопоставление с многоуровневым полем подстановки, которое указывает на поле подстановки в другой таблице, в настоящее время не поддерживается.
  • Сопоставление полей"Состояние" и "Причина состояния" в настоящее время не поддерживается.
  • Сопоставление данных с многострочного текста, включающего символы разрывов строк, не поддерживается, и разрывы строк удаляются. Вместо этого можно использовать тег <br> разрыва строки для загрузки и сохранения многострочного текста.
  • Настройка полей выбора с одним и несколькими выборами в одной таблице при указании нескольких значений для поля с несколькими выборами не поддерживается.
  • Стандартные потоки данных версии 2 зависят от полей createdon и modifiedon для удаления строк, не существующих в выходных данных потоков, из целевой таблицы. Если эти столбцы не существуют в целевой таблице, записи не удаляются.
  • Сопоставление полей, свойство IsValidForCreate которого установлено как false, не поддерживается (например, поле "Учетная запись" в сущности Contact).