powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / SSAS Count distinct мера с дополн. условием
13 сообщений из 13, страница 1 из 1
SSAS Count distinct мера с дополн. условием
    #39471677
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день всем.

DWH для прсототы звезда
(ТФ)Events <--- dwh.DimPatient ( где есть флаг CCD {Y, N})

Есть мера - Count Disitnct пациентов по (ТФ)Events .

Надо посчтать точно такую же но с условием флаг CCD {Y}
т.е условие Where ( CCD {Y} ) оно работает
но мне надо именн 2-ю меру Count Disitnct для пациентвов флаг CCD = {Y}

Пока на уровне ETL вместо (ТФ)Events сделал View с добавочным полем

Код: sql
1.
2.
3.
4.
, iif ( Pt1.Is_CCD_YN = 'Y', FE.PatientKey , NULL ) as CCD_PatientKey
from dwh.FactEvent FE
	INNER join   dwh.DimPatient Pt1
       on FE.PatientKey = Pt1.PatientKey


ну и по CCD_PatientKey считаю Count Disitnct (нуллы не считаются)
Решение вроде рабочее.
А можно ли в самом кубе мертику Count Distinct сделать с условием пациентвов флаг CCD = {Y}
Scope
вроде как позволяет переопредлеить метрику на узлах куба
но не вижу как в данном случае
( в отчетах флага ссд вообще не должно быть )
...
Рейтинг: 0 / 0
SSAS Count distinct мера с дополн. условием
    #39471739
ShIgor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федор,

бяда прям...

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
with 
  member [Measures].[# of Patients with CCD] as ([Measures].[# of Patients], [Dim Patient].[CCD].&[Y])
  member [Measures].[# of Patients wo CCD] as ([Measures].[# of Patients], [Dim Patient].[CCD].&[N])
select
 {[Measures].[# of Patients], [Measures].[# of Patients with CCD], [Measures].[# of Patients wo CCD]} on columns,
 {чего-то там} on rows
from
 [откуда-то]
...
Рейтинг: 0 / 0
SSAS Count distinct мера с дополн. условием
    #39472002
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShIgor,
БОЛЬШОЕ СПАСИБО !!!
реально просто если знаешь - но я то не знал
жалею что раньше не спросил - перекраивал ETL
в любом разрезе в принципе можно
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
with 
  member [Measures].[c1] as ( [Measures].[# of Patients with CCD] , [Dim Patient].[Is CCD YN].&[Y] )
  member [Measures].[c2] as ( [Measures].[# of Patients with CCD] , [Dim Patient].[Is CCD YN].&[N] )
  member [Measures].[c3] as ( [Measures].[# of Patients with CCD] , [Dim Patient].[Is CCD YN].[All].UNKNOWNMEMBER)
  member [Measures].[o1] as ( [Measures].[# of Patients with CCD] ,  [Dim Organization].[Organizations].&[388] )
  member [Measures].[p1] as ( [Measures].[# of Patients with CCD] , [Dim Patient].[Patient].&[60863]  )
SELECT NON EMPTY 
{ [Measures].[# of Patients with CCD]  
, [Measures].[c1]
, [Measures].[c2]
, [Measures].[c3]
, [Measures].[o1]
, [Measures].[p1]
}
ON 0  
FROM [Simply Connect DWH] 
...
Рейтинг: 0 / 0
SSAS Count distinct мера с дополн. условием
    #39490636
Фотография Alex_496
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подыму тему DISTINCT COUNT с условием WHERE (condition)

самый медленный

побыстрее

не проверял


физическая DISTINCT COUNT мера, предоставляя в качестве партиционированной таблицы фактов view c фильтром самый быстрый вариант на объемах в десятки-сотни млн. строк

Что-нибудь изменилось в SSAS MOLAP 2016 EE ?? ну кроме того, что DC вроде не будет сканировать лишние OLAP-партиции при пользовательских запросах


Проблема в том, что по этой базовой таблице требуется штук 8 DISTINCT COUNT мер и плодить отдельные группы мер.....
...
Рейтинг: 0 / 0
SSAS Count distinct мера с дополн. условием
    #39490942
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_496,
2 Ссылка ведет на блог
http://sqlblog.com/blogs/mosha/archive/2007/11/22/optimizing-count-filter-expressions-in-mdx.aspx
или это общаяс
правильно я понимаю что за DISTINCT отвечает Exists ?
т.е каунт по условию я вижу
а вот каунт DISTINCT - нет
ткните меня пальцем почему DISTINCT ?


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
WITH MEMBER [Measures].[High Volume Products Count] AS 
 Count(Filter(
  Exists([Product].[Product].[Product],,"Internet Sales")
  ,[Measures].[Internet Order Quantity] > 5))
SELECT [Customer].[Customer Geography].[Country] ON 0
, [Date].[Calendar].[Date].MEMBERS ON 1
FROM [Adventure Works]
WHERE [Measures].[High Volume Products Count]
...
Рейтинг: 0 / 0
SSAS Count distinct мера с дополн. условием
    #39490978
Фотография Alex_496
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федор,

ну типа да
...
Рейтинг: 0 / 0
SSAS Count distinct мера с дополн. условием
    #39491050
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федор,

DISTINC потому что вы считаете элементы измерения, а не строки в таблице фактов.

COUNT(FILTER([Set], [Condition]))

это тормоз

использовать надо

SUM([Set], IIF([Condition], 1, NULL))

как уже было указано в посте Alex_496 (с ссылкой на Мошу)
...
Рейтинг: 0 / 0
SSAS Count distinct мера с дополн. условием
    #39491083
Фотография Alex_496
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир ШтепаГулин Федор,

DISTINC потому что вы считаете элементы измерения, а не строки в таблице фактов.

COUNT(FILTER([Set], [Condition]))

это тормоз

использовать надо

SUM([Set], IIF([Condition], 1, NULL))

как уже было указано в посте Alex_496 (с ссылкой на Мошу)


Владимир,

на таблице фактов в сотню миллионов и 1000 пользователей
по-прежнему рулят хардовые физические DC- меры ?
...
Рейтинг: 0 / 0
SSAS Count distinct мера с дополн. условием
    #39491236
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_496,

Естественно хардовые дц меры круче других вариантов, но и их процессинг не на шару
...
Рейтинг: 0 / 0
SSAS Count distinct мера с дополн. условием
    #39491244
Фотография Alex_496
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир,

пока сделал на формулах SUM([Set], IIF([Condition], 1, NULL))

поскольку DC требуется несколько:
рабочие торговые точки
продающие торговые точки
продающие торговые точки локальных сетей
продающие торговые точки региональных сетей
продающие торговые точки федеральных сетей
агенты регистрирующие
агенты подписавшие
и непременно хотят видеть в отдельных столбцах OLAP-сводной таблицы

Может, "продающие торговые точки" - сделать физическую DC, а остальные - формулой от этой физической
...
Рейтинг: 0 / 0
SSAS Count distinct мера с дополн. условием
    #39491303
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_496,

Именно так, а по другим признакам создать легенькое измерение и тогда цм будут простыми и быстрыми
...
Рейтинг: 0 / 0
SSAS Count distinct мера с дополн. условием
    #39601419
Alex_496, здравствуйте.
"Может, "продающие торговые точки" - сделать физическую DC, а остальные - формулой от этой физической"

а можно примерчик ?
Вы добавили свои торгТочки как таблицу фактов, группу мер или просто добавили меру DC?
И как выглядела формула для Продающих точек, использующая меру DC для торгТочек ?
...
Рейтинг: 0 / 0
SSAS Count distinct мера с дополн. условием
    #39601611
Фотография Alex_496
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Го.,

Меру "Торговых точек активных количество" сделал физической DistinctCount (см. скриншот)
а меры "Торговых точек активных федеральных количество", "Торговых точек активных региональных количество", "Торговых точек активных локальных количество" - вычисляемые по флагу "Стала договором" в таблице фактов кредитных заявок

Визуально по скорострельности отклика запросов эти варианты у меня получались одинаковыми. В таблице фактов ~ 50 млн. записей

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
CREATE MEMBER CURRENTCUBE.[Measures].[Торговых точек активных количество] -- продающих торговых точек
AS
[Measures].[id_sale_point_active]
,FORMAT_STRING = "#,#"
,ASSOCIATED_MEASURE_GROUP = 'Показатели'
,DISPLAY_FOLDER = 'Торговые точки'
,VISIBLE = 1;

/*
CREATE MEMBER CURRENTCUBE.[Measures].[Торговых точек активных количество] -- продающих торговых точек
AS
--COUNT(FILTER(NONEMPTY( [Торговые точки].[Код торговой точки].[Код торговой точки], [Measures].[is_credit_contract]) , [Measures].[is_credit_contract] > 0))

-- так будет быстрее рассчитываться:
SUM( [Торговые точки].[Код торговой точки].[Код торговой точки],  IIF([Measures].[is_credit_contract] > 0, 1, NULL)  )
,FORMAT_STRING = "#,#"
,ASSOCIATED_MEASURE_GROUP = 'Показатели'
,DISPLAY_FOLDER = 'Торговые точки'
,VISIBLE = 1;
*/


CREATE MEMBER CURRENTCUBE.[Measures].[Торговых точек активных федеральных количество]
AS
SUM( ( [Торговые точки].[Код торговой точки].[Код торговой точки], [Торговые точки].[Тип торговой сети].&[1] ),  IIF([Measures].[is_credit_contract] > 0, 1, NULL)  )
,FORMAT_STRING = "#,#"
,ASSOCIATED_MEASURE_GROUP = 'Показатели'
,DISPLAY_FOLDER = 'Торговые точки'
,VISIBLE = 1;
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / SSAS Count distinct мера с дополн. условием
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]