使用日期少于

问题描述

我有一个查询,我先取双精度值,然后取日期(例如2020-03)。 看起来是这样:

SELECT 
  NON EMPTY 
    {[Measures].[Revenue]} ON COLUMNS,NON EMPTY 
    {[DimDates].[YearMonthNum].[YearMonthNum].ALLMEMBERS}
  DIMENSION PROPERTIES 
    MEMBER_CAPTION,MEMBER_UNIQUE_NAME
   ON ROWS
FROM 
(
  SELECT 
    {[TransactionsData].[FirstYearMonth].&[ALL]} ON COLUMNS
  FROM 
  (
    SELECT 
      {[TransactionsDataExtra].[Cluster].[All]} ON COLUMNS
    FROM 
    (
      SELECT 
        {[TransactionsDataExtra].[Campaign].[All]} ON COLUMNS
      FROM 
      (
        SELECT 
          {[TransactionsData].[RevenueGenerating].[All]} ON COLUMNS
        FROM 
        (
          SELECT 
            {[TransactionsData].[Product].[All]} ON COLUMNS
          FROM 
          (
            SELECT 
              {[TransactionsDataExtra].[Channel].[All]} ON COLUMNS
            FROM 
            (
              SELECT 
                {[TransactionsDataExtra].[Custom4].[All]} ON COLUMNS
              FROM 
              (
                SELECT 
                  {[TransactionsDataExtra].[Custom5].[All]} ON COLUMNS
                FROM 
                (
                  SELECT 
                    {[TransactionsDataExtra].[Custom6].[All]} ON COLUMNS
                  FROM 
                  (
                    SELECT 
                      {[TransactionsData].[ClientId].&[233]} ON COLUMNS
                    FROM [Model]
                  )
                )
              )
            )
          )
        )
      )
    )
  )
)
WHERE 
  (
    [TransactionsDataExtra].[Channel].[All],[TransactionsData].[Product].[All],[TransactionsData].[RevenueGenerating].[All],[TransactionsDataExtra].[Campaign].[All],[TransactionsData].[FirstYearMonth] <= '2020-01',[TransactionsDataExtra].[Cluster].[All],[TransactionsData].[ClientId].&[233]
  )
CELL PROPERTIES 
  VALUE,BACK_COLOR

我想要实现的是按单个日期(例如,如果有选择的话)对查询进行过滤,例如

[TransactionsData]。[FirstYearMonth]

但出现错误 函数需要5个参数的元组设置表达式。使用了字符串或数字表达式。

我还尝试过传递日期,例如:

[TransactionsData]。[FirstYearMonth]

我是DAX的新手,我尝试使用sql时会用到的东西,这显然不是正确的方法。有人可以帮我吗?

解决方法

您可以使用运算符:定义日期范围。

因此在Adventure Works中这是有效的:

{[Date].[Date].&[20130101]:[Date].[Date].&[20130131]}

现在,如果您将一侧保留为空,则表示直到(包括)该日期在右侧。所以这是有效的:

select 
[Measures].[Internet Sales Amount]
on columns
from [Adventure Works]
where {null:[Date].[Date].&[20130131]}

因此您的WHERE需要调整为类似以下内容:

WHERE 
  (
    [TransactionsDataExtra].[Channel].[All],[TransactionsData].[Product].[All],[TransactionsData].[RevenueGenerating].[All],[TransactionsDataExtra].[Campaign].[All],{null:[TransactionsData].[FirstYearMonth].&[20200101]},[TransactionsDataExtra].[Cluster].[All],[TransactionsData].[ClientId].&[233]
  )

在上面,您需要确保此表达式[TransactionsData].[FirstYearMonth].&[20200101]是多维数据集的成员。