Автоматически установить логическое представление для таблицы репликатора данных в Exact Online

Я использую Invantive Data Hub с опцией Data Replicator для репликации Exact Online в нашей базе данных Azure. Таблицы с такими именами, как: dcd_ganw2_wpbz0_djmwe красиво созданы автоматически и уходят автоматически. И имена столбцов, как d63bb0afa6fe178c81ad30dc3a34b3,

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

Есть ли способ автоматизировать этот процесс, кроме как сделать это вручную и сопоставить имена столбцов с обычными понятными именами?

1 ответ

Вы можете автоматически создавать представления на SQL Server в той же базе данных, что и таблицы Data Cache.

Обратите внимание, что Data Cache намеренно имеет такие странные имена. Некоторые облачные платформы имеют наборы данных с именами, длина которых превышает 100 символов, и имена столбцов, содержащие более 1000 символов после того, как они стали уникальными и логичными.

Выпуск 2

Для выпуска 2 все намного проще, чем для выпуска 1.

Настройки можно найти с помощью:

select * from dc_settings@datacache

Или используя:

local data cache

Или с помощью кнопки на ленте.

И параметры могут быть изменены с помощью:

alter persistent cache set overall view maintain true; /* New tables automatically get an overall view created. */
alter persistent cache set overall view prefix '{sourceabbreviation}_';
alter persistent cache set overall view postfix '_v';

И используя формы в пользовательском интерфейсе.

В качестве заполнителей в префиксе и постфиксе вы можете использовать:

  • sourceabbreviation: сокращение от исходной платформы, например eol для точного онлайн и at для автозадачи.
  • tablename: имя таблицы, когда она определена, например, projects,
  • shortname: короткое имя (псевдоним) таблицы, если оно определено, например pjt за projects,

Или за столом:

alter persistent cache table FULLNAME logical overall view maintain true;
alter persistent cache table FULLNAME logical overall view name 'NAME_V';

Массовые обновления могут быть вызваны с помощью:

alter persistent cache refresh

Чтобы принудительно удалить все версии разделов таблицы кеша в состоянии READY:

alter persisten cache purge ready tables

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

alter persistent cache load

Для такой платформы, как Salesforce или Dynamics CRM, такая начальная загрузка может занять несколько часов!

Выпуск 1

Для выпуска 1 вы можете указать отображение следующим образом:

  • Прежде всего убедитесь, что вы попали в набор данных облачного приложения; это гарантирует, что таблица, как dcd_ganw2... создается в Data Cache.
  • Затем откройте ваш любимый редактор SQL на используемой платформе базы данных, такой как SQL Server Management Studio для SQL Server.
  • Запросить таблицу dc_tables и искать строки, где столбец lv_overall_active_flag является Y, Это таблицы, для которых не созданы логические представления.
  • Обновите их следующим образом:

    обновить набор dc_tables lv_overall_active_flag = 'Y', lv_overall_view_name = 'eol_SOME_NAME_r', где id = UNIQUE-ID

  • _r это просто стандартный постфикс, но может быть что-то еще. Но убедитесь, что имя представления является допустимым идентификатором на платформе.

  • Также убедитесь, что все уже кэшированные данные считаются устаревшими, например, используя подсказку /*+ ods(true, interval '1 minutes') */ в вашем SQL или просто массивным путем:

    обновить dc_table_partition_versions set date_becomes_obsolete = getdate() где tbe_id = UNIQUE-ID

  • Теперь снова выйдите из движка Invantive SQL. Не забудь!

  • Войдите в систему Invantive SQL снова.
  • Нажмите на набор данных в другой раз.
  • Кэш данных облачных данных будет перестроен.
  • Будет создан вид, содержащий данные по всем выбранным разделам. На Exact Online, в которой могут участвовать сотни компаний, на Salesforce только одна и т. Д.
  • Теперь вы можете выполнить следующий запрос в SQL Server Management Studio, PGAdmin или в любом другом случае:

    выберите * из eol_SOME_NAME_r

Производительность будет намного лучше, чем встроенные запросы в Exact Online или Salesforce, как правило, в диапазоне от 50 до 2.500x быстрее. Обратите внимание, что в зависимости от объема данных таблицы со странными именами будут автоматически создавать индексы, основанные на объеме, статистике и т. Д. В целом вам не нужно создавать их самостоятельно.

Когда вам нужно посмотреть на компанию / раздел, пожалуйста, используйте lv_ptn_active_flag а также lv_ptn... колонны.

Другие вопросы по тегам