【问题标题】:Tableau Sum of Month Sales with Las Account Customer Item Sale of the monthTableau 月销售额总和与 Las 帐户客户项目当月销售额
【发布时间】:2019-07-24 05:42:44
【问题描述】:

我正在尝试使用 tableau 计算或 sql 返回每个客户的帐户最后一次销售一个月内的购买总和。

我有 8 月到 1 月的数据,每个月有 10 万多个帐户,一个帐户中有多个用户。数据集如下所示

 Account User Item  Plan        Status date     Sale
 1       a   toy    unlimited  open    1/1/2019    10  
 1       a   book   unlimited  closed  1/5/2019    10   
 1       a   toy    unlimited  open    1/10/2019   10 
 1       b   toy    unlimited  open    1/1/2019    10 
 1       c   book    unlimited  open   1/1/2019    10 
 1       d   toy    unlimited  open    1/1/2019    10 
 1       d   toy    unlimited  open    1/2/2019    10 
 1       f   toy    unlimited  open    1/1/2019    10 
 1       a   toy    unlimited  open    2/1/2019    10  
 1       a   book   unlimited  closed  2/5/2019    10   
 1       a   toy    unlimited  open    2/10/2019   10 
 1       b   toy    unlimited  open    2/1/2019    10 
 1       c   book    unlimited  open   2/1/2019    10 
 1       d   toy    unlimited  open    2/1/2019    10 
 1       d   toy    unlimited  open    2/2/2019    10 
 1       f   toy    unlimited  open    2/1/2019    10 

每个帐户、客户、上次销售和总月销售的预期结果应如下所示

 1       a   toy    unlimited  open    1/10/2019   30 
 1       b   toy    unlimited  open    1/1/2019    10 
 1       c   book    unlimited  open   1/1/2019    10 
 1       d   toy    unlimited  open    1/2/2019    20 
 1       f   toy    unlimited  open    1/1/2019    10 
 1       a   toy    unlimited  open    2/10/2019   30 
 1       b   toy    unlimited  open    2/1/2019    10 
 1       c   book    unlimited  open   2/1/2019    10 
 1       d   toy    unlimited  open    2/2/2019    20 
 1       f   toy    unlimited  open    2/1/2019    10 

我尝试过使用

进行画面计算
IF [PlanCount] > 1 and [T|F MaxDate] = True then [Plan] else [Plan] END

或 Hive 中的 Row_Number 但任何列计数大于 0,其中有一个 Null 值,因为最大日期导致计划设置为 maxdate,但当 maxDate 条件为 false 时也为 null。这应该在哪里完成,在 etl 级别还是在 tableau 计算级别?

【问题讨论】:

    标签: sql hadoop hive tableau-api hiveql


    【解决方案1】:

    在大多数数据库中,您可以像这样使用窗口函数:

    select t.*
    from (select t.*,
                 sum(sale) over (partition by account, user, year(date), month(date)) as month_sales,
                 row_number() over (partition by account, user, year(date), month(date) order by date desc) as seqnum
          from t
         ) t
    where seqnum = 1;
    

    从日期中提取年份和月份的函数可能取决于您实际使用的数据库。

    【讨论】:

    • 嗨,戈登!很高兴再次收到您的来信。我正在学习一个新的数据库,这个 row_num 对分区很有趣。我今天试试
    猜你喜欢
    • 2021-10-12
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    相关资源
    最近更新 更多