Кубу обработки SSAS не удалось продублировать ключ атрибута, НО при запуске raw sql не отображается дуплей - PullRequest
0 голосов
/ 25 февраля 2020

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

Точная ошибка при обработке куба:

Errors in the OLAP storage engine: A duplicate attribute key has been found when processing: Table: 'dbo_vw_DimDRG', Column: 'DRGCode', Value: '743'. The attribute is 'DRG Code'.

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

/*raw sql query used in SSAS dimension processing*/
SELECT DISTINCT

[dbo_vw_DimDRG].[DRGCode] AS [dbo_vw_DimDRGDRGCode0_0]

  FROM [dbo].[vw_DimDRG] AS [dbo_vw_DimDRG]

--WHERE DRGCode = '743' /*I added this to filter results*/

Стоит отметить, что данные VARCHAR. Стоит также отметить, что в данных содержится несколько значений «743», однако это сделано намеренно, и запрос куба использует DISTINCT, поэтому это не должно вызывать проблем. Этот столбец не является моим первичным ключом, а столбец первичного ключа обрабатывается очень хорошо.

То, что я пробовал:

  1. Использование Len () для обеспечения всех значений '743' одинаковы (может быть, есть конечные пробелы?)
  2. Подтверждено, что в данных отсутствуют значения NULL и ''.
  3. Импортированы другие клиенты, которые используют точно такую ​​же реляционную структуру ( и имеют несколько значений «743»), и они работают просто отлично.

Можете ли вы вспомнить что-нибудь, чего мне здесь не хватает? Я чувствую, что это как-то связано с тем, что данные VARCHAR не являются действительно уникальными, но я недостаточно знаю SSAS, чтобы определить проблему.

1 Ответ

0 голосов
/ 26 февраля 2020

Если кто-нибудь найдет это:

Использование DATALENGTH () НЕ показывает скрытые символы. Я решил эту проблему, добавив эту логику c в свой столбец.

REPLACE(REPLACE(ISNULL([AttributeColumn], ''), CHAR(13), ''), CHAR(10), '')

Это позволило кубу успешно обработаться. Я предполагаю, что должны быть скрытые символы, которые фактически не подобраны по длине данных ().

...