настраиваемая мера подсчета работает вечно MDX - PullRequest
0 голосов
/ 30 мая 2020

Итак, этот вопрос уходит от того, который здесь

Я пытался сделать аналогичный счетчик, и я сделал предложенное решение, но оно все еще работает ... и оно прошло более 30 минут безрезультатно, а без этого - менее чем за минуту. Так я что-то упускаю? Любое руководство поможет. Вот мой запрос:

WITH 
    MEMBER [Measures].[IteractionCount] AS 
    NONEMPTY
    (
        FILTER
        (
            ([DimInteraction].[InteractionId].[ALL].Children,
            [Measures].[Impression Count]),
            [DimInteraction].[Interaction State].&[Enabled]
        )
    ).count

SELECT 
(
    {[Measures].[IteractionCount],
    [Measures].[Impression Count]}
)
ON COLUMNS,
(   

    ([DimCampaign].[CampaignId].[CampaignId].MEMBERS,
     [DimCampaign].[Campaign Name].[Campaign Name].MEMBERS, 
     [DimCampaign].[Owner].[Owner].MEMBERS)
    ,[DimDate].[date].[date].MEMBERS
)
ON ROWS
FROM 
(
    SELECT 
    (
       {[DimDate].[date].&[2020-05-06T00:00:00] : [DimDate].[date].&[2020-05-27T00:00:00]}
    )
    ON COLUMNS 
    FROM [Model]
)
WHERE
(
        {[DimCampaign].[EndDate].&[2020-05-27T00:00:00]:NULL}, 
        [DimCampaign].[Campaign State].&[Active], 
        {[DimInteraction].[End Date].&[2020-05-27T00:00:00]:NULL}//,
        //[DimInteraction].[Interaction State].&[Enabled]
)     

Я не знаю, влияет ли FILTER на него каким-либо образом, но я пробовал его с и без, и он все еще работает вечно. Мне нужно специально отфильтровать его до [DimInteraction].[Interaction State].&[Enabled]. Я также попытался вместо этого отфильтровать эту опцию в предложении WHERE, но не повезло

Любые предложения по оптимизации были бы очень признательны! спасибо!

ОБНОВЛЕНИЕ: я использую этот запрос для загрузки данных в python фрейм данных. Вот мой код для этого. Я использовал этот скрипт для подключения и загрузки данных. Мне пришлось внести в него некоторые правки, чтобы использовать аутентификацию windows.

ssas_api._load_assemblies() #this uses Windows Authentication
conn = ssas_api.set_conn_string(server='server name',db_name='db name')

df = ssas_api.get_DAX(connection_string=conn, dax_string=query))

Параметр dax_string - это то, что принимает запрос dax или mdx для извлечения из куба.

1 Ответ

0 голосов
/ 30 мая 2020

Попробуйте эту оптимизацию:


WITH 
    MEMBER [Measures].[IteractionCount] AS 
    SUM
    (
        [DimInteraction].[InteractionId].[InteractionId].Members
         * [DimInteraction].[Interaction State].&[Enabled],
         IIF(
           IsEmpty([Measures].[Impression Count]),
           Null,
           1
         )
    )

SELECT 
(
    {[Measures].[IteractionCount],
    [Measures].[Impression Count]}
)
ON COLUMNS,
(   

    ([DimCampaign].[CampaignId].[CampaignId].MEMBERS,
     [DimCampaign].[Campaign Name].[Campaign Name].MEMBERS, 
     [DimCampaign].[Owner].[Owner].MEMBERS)
    ,[DimDate].[date].[date].MEMBERS
)
PROPERTIES MEMBER_CAPTION
ON ROWS
FROM 
(
    SELECT 
    (
       {[DimDate].[date].&[2020-05-06T00:00:00] : [DimDate].[date].&[2020-05-27T00:00:00]}
    )
    ON COLUMNS 
    FROM [Model]
)
WHERE
(
        {[DimCampaign].[EndDate].&[2020-05-27T00:00:00]:NULL}, 
        [DimCampaign].[Campaign State].&[Active], 
        {[DimInteraction].[End Date].&[2020-05-27T00:00:00]:NULL}//,
        //[DimInteraction].[Interaction State].&[Enabled]
)     
CELL PROPERTIES VALUE

Если это не сработает, опишите количество строк, возвращаемых вашим запросом, когда вы закомментировали IteractionCount (si c) с оси столбцов . И, пожалуйста, опишите, сколько у вас уникальных значений InteractionId.

...