2405_84372505 2024-04-27 11:00 采纳率: 0%
浏览 7

tableau里面join 来自两个不同的database的table后把两个table里面的data通过是一样的产品名来分析Muesli的市场销售额市场的销售额一直显示NULL

我把Industry Sales和Muesli data inner join 了以后,想对比一下Muesli对标industry的市场总销售份额(Amount/Sales),还有每个产品的市场份额。
industry就是图中那个sales,但是Muesli里面的产品名(Material Name)放到filter或者column那里,市场的总销售额就会显示Null。
data source那里我已经通过产品名,每个产品的重量把Muesli和industry的table连接到了一起。
请问我是哪里出错了,刚刚开始接触tableau,不太清楚到底怎么解决这个问题。

img

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-04-27 11:00
    关注

    引自免费微信小程序:皆我百晓生

    看起来你在Tableau中尝试进行数据分析时遇到了一些问题。根据你的描述,我将为你提供一个详细的步骤指南来解决这个问题。

    首先,确保在数据连接部分已经正确地建立了两个表之间的关系。在Tableau中,你需要通过匹配字段名称或者创建计算字段来关联来自不同数据库的表格。在这个例子中,你提到是通过产品名(Material Name)和每个产品的重量来连接这两个表格的。确保这两个条件都已经被正确设置,并且没有拼写错误或大小写不一致的问题。

    接下来,我们将创建一个新的计算字段来得到Muesli的市场份额。这个计算字段将会是Muesli的销售额除以行业总销售额。这里是一个创建这个计算字段的步骤:

    1. 在Tableau的数据窗口中,点击右键选择“新建计算字段”。

    2. 输入字段名,例如:Muesli_Market_Share

    3. 编写计算公式:

      SUM(IF [Material Name] = 'Muesli' THEN [Amount] ELSE 0 END) / SUM([Sales])
      

      这个公式会计算只有当Material Name为'Muesli'时的Amount值,然后除以总的Sales值,从而得到Muesli的市场份额。

    4. 点击确定保存计算字段。

    现在你应该可以在工作表上看到新创建的计算字段Muesli_Market_Share。将其添加到列区域,同时将Material Name或者Product字段添加到行区域,这样可以按产品查看市场份额。

    如果你仍然遇到NULL值,可能是因为在某些情况下,特定产品的销售额为0,而试图除以0会导致NULL结果。你可以通过在计算字段中添加额外的逻辑来处理这种情况,例如:

    IF SUM([Sales]) > 0 THEN 
        SUM(IF [Material Name] = 'Muesli' THEN [Amount] ELSE 0 END) / SUM([Sales])
    ELSE 
        NULL
    END
    

    这段代码会检查总销售额是否大于0,如果是,则执行原来的计算;否则返回NULL,这样就不会因为除以0而产生错误。

    按照这些步骤操作应该能解决你的问题。如果你有任何疑问或者需要进一步的帮助,请随时告诉我。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 4月27日