如何在另一个计算字段之上求和一个计算字段?

时间:2018-10-06 17:10:30

标签: tableau

当前问题我可能难以描述,但我会尽力而为。

当前,在我的工作簿中,我在产品级别遇到重复,因此我创建了一个计算字段来解决此问题。我想知道在过去的一年中没有对哪些产品进行过报价,因此答案应为 1 (未报价)和 0 (已报价),我通过if未引用%产品的声明,公式看起来像这样:

IF [% Not Quoted] > 0 
then 1 
else 0 
end 

我将其命名为未引用产品。对我来说效果很好,

但是现在我想要在供应商级别对未报价的产品进行计数或求和(?),这意味着未报价的产品需要按供应商名称进行分组。具体而言,我的目标是提供一个未按供应商名称引用的所有产品的表格,并且在产品级别没有重复项。我想做的是使用先前计算出的以下内容创建一个新的计算字段:

IF [Prod Not Quoted] = 1 
then sum(1) 
else 0 
end

但是,后一种计算方法给了我所有被报价和未报价产品的总和,以及我要避免的重复产品。为什么如果[未引用产品] = 1则sum(1)否则0结尾不起作用?

有人在Tableau论坛上提出以下建议

SUM (IF [Prod Not Quoted] = 1 THEN 1 ELSE 0 END) 

无论如何我得到的错误都不能汇总尚未汇总的内容。

正在解决我遇到的问题吗?

1 个答案:

答案 0 :(得分:0)

如果在维度级别有重复项,则可以使用FIXED计算在维度级别仅选择一行。例如:

Public Sub Save(a, b)
     Try
         SqlCon.Open()
         SqlCommand = New SqlCommand("INSERT INTO sample (name, date_surrendered) VALUES (
                                      @name,@datesurrendered)", SqlCon)

         SqlCommand.Parameters.Add("@name", SqlDbType.Text).Value = a
         SqlCommand.Parameters.Add("@datesurrendered", SqlDbType.DateTime).Value = b

         SqlAdapter = New SqlDataAdapter(SqlCommand)
         SqlDataset = New DataSet
         SqlAdapter.Fill(SqlDataset)
         SqlCon.Close()
     Catch ex As Exception
         MsgBox(ex.Message)
        SqlCon.Close()
    End Try
 End Sub

这是说“对于每个产品,最大报价是多少?”因此,如果您有重复项,它将仅返回一个值

现在我们正在解决重复项问题,可以将其包装在SUM中:

{FIXED [Product]: MAX(quoted)}

要回答有关为何总和不起作用的问题,这是因为您要进行总和。如果您仍然想采用提供的方法,则可以将其更改为:

SUM({FIXED [Product]: MAX(quoted)})

(我引用了聚合字段,但这将是您正在使用的度量)