SSAS назвал расчет, ссылающийся на другую таблицу - PullRequest
0 голосов
/ 31 мая 2019

Я делаю многомерный анализ в инструменте SSAS VS.У меня есть две таблицы, animal animal_intake.Животное идентифицируется как animal_id, а animal_intake ссылается на животное, используя animal_id.Для этого я хочу добавить id для создания именованного расчета с учетом того, что будет иметь информацию о возрасте животного на день приема.Чтобы рассчитать возраст, я должен указать дату рождения животного в animal_intake под названием калькуляция.На основе решения, описанного в документации [https://docs.microsoft.com/en-us/sql/analysis-services/multidimensional-models/define-named-calculations-in-a-data-source-view-analysis-services?view=sql-server-2017#creating-named-calculations], я создал следующий запрос для именованного расчета

(SELECT [ANIMAL].[birth_date] FROM [ANIMAL] WHERE [ANIMAL].[animal_id] =[animal_id])

только для того, чтобы получить доступ к дате рождения животного.К сожалению, когда я нажимаю «исследовать данные», VS отображает следующую ошибку

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

#

Я не понимаю, в чем проблема - animal_id является первичным ключом таблицы ANIMAL, а поле birth_date имеетNOT NULL ограничение.Поэтому для данного naimal_id должен быть ровно один результат для запроса.

Вот упрощенные таблицы из моей базы данных.

ANIMAL

CREATE TABLE [ANIMAL] (
    [animal_id] CHAR(7) PRIMARY KEY,
    [birth_date] DATE REFERENCES [DATE]([exact_date]) NOT NULL
);

ANIMAL_INTAKE

CREATE TABLE [ANIMAL_INTAKE] (
    [animal_id] CHAR(7) NOT NULL REFERENCES [ANIMAL],
    [stay_number] TINYINT NOT NULL,
    [intake_date] DATE REFERENCES [DATE]([exact_date]) NOT NULL,
    PRIMARY KEY ([animal_id], [stay_number]),
);

1 Ответ

0 голосов
/ 02 июня 2019

Попробуйте следующее:

(SELECT [ANIMAL].[birth_date] FROM [ANIMAL] WHERE [ANIMAL].[animal_id] = [ANIMAL_INTAKE].[animal_id])

Я предполагаю, что ваша таблица в DSV называется ANIMAL_INTAKE и это таблица, в которую вы вносите свои именованные вычисления.

...