Как работать с максимальной длиной строки 255 в метаданных SSAS DMV - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь импортировать метаданные SSAS DMV в SQL Server, используя поток данных в SSIS. В этом примере я пытаюсь импортировать данные из DMV $ SYSTEM.TMSCHEMA_PARTITIONS. Мой оператор select (который выглядит как SQL, но не SQL):

SELECT
[ID]
,[TableID]
,[Name]
,[Description]
,[DataSourceID]
,[QueryDefinition]
,[State]
,[Type]
,[PartitionStorageID]
,[Mode]
,[DataView]
,[ModifiedTime]
,[RefreshedTime]
,[SystemFlags]
,[ErrorMessage]
FROM $SYSTEM.TMSCHEMA_PARTITIONS

Столбец QueryDefinition содержит записи с несколькими тысячами символов. Однако раздел ExternalColumns компонента источника данных служб SSIS распознает столбцы как DT_WSTR длиной 255. Изменить тип данных внешнего столбца невозможно, так как он будет возвращаться обратно. Также невозможно использовать CAST или CONVERT в операторе выбора DMV согласно документации MS:

Механизм запросов для DMV - это анализатор Data Mining. Синтаксис запроса DMV основан на операторе SELECT (DMX). Хотя синтаксис запроса DMV основан на операторе SQL SELECT, он не поддерживает полный синтаксис оператора SELECT. В частности, JOIN, GROUP BY, LIKE, CAST и CONVERT не поддерживаются.

Естественно, я получаю ошибку усечения. У меня вопрос: есть ли способ изменить способ, которым SSIS интерпретирует типы данных метаданных SSAS DMV?

Я пытался использовать order by (в качестве теста), чтобы сначала вернуть записи с длиной строки> 255, чтобы заставить SSIS мыслить правильно. Это было безрезультатно.

1 Ответ

0 голосов
/ 08 января 2019

Попробуйте добавить запрос со всеми столбцами, кроме столбца QueryDefinition, а затем определите этот столбец с помощью следующих шагов. Пройдя через это, я смог установить тип данных DT_WSTR длиной 4000 для внешнего и выходного столбцов компонента «Источник OLE DB».

  • Определение диспетчера подключений как подключения OLE DB с помощью собственного типа поставщика OLE DB \ Microsoft OLE DB для служб Analysis Services 13.0.
  • В задаче «Поток данных» добавьте компонент «Источник OLE DB» со всеми столбцами, кроме столбца QueryDefinition, и убедитесь, что типы данных для других столбцов установлены правильно.
  • После этого установите ValidateExternalMetadata в False для источника OLE DB.
  • Откройте расширенный редактор источника OLE DB (щелкните правой кнопкой мыши, затем Показать расширенный редактор ...). Добавьте столбец QueryDefinition в поле SqlCommand на странице свойств компонента.
  • На странице Свойства ввода и вывода перейдите в папку Внешние столбцы в разделе Вывод источника OLE DB, нажмите кнопку Добавить столбец и добавьте столбец QueryDefinition с правильным типом данных и большей длиной. Запишите значение в поле ID для этого столбца.
  • В папке «Выходные столбцы» снова добавьте столбец QueryDefinition с тем же типом данных и длиной. В поле ExternalMetadataColumnID введите то же значение, которое этот столбец имеет в поле ID в папке External Columns, чтобы сопоставить их вместе.
...