sql - 带有Las帐户的Tableau月销售总额客户项目本月销售

标签 sql hadoop hive tableau-api hiveql

我正在尝试使用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 

我已经尝试过使用Tableau计算
IF [PlanCount] > 1 and [T|F MaxDate] = True then [Plan] else [Plan] END

要么
hive 中的Row_Number但任何列计数大于0时,其中都有一个Null值,这是因为计划设置为maxdate的最大日期,但当maxDate条件为false时也为null。在etl级别或tableau计算级别上应该在哪里进行?

最佳答案

在大多数数据库中,您可以使用如下窗口函数:

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;

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

关于sql - 带有Las帐户的Tableau月销售总额客户项目本月销售,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54957364/

相关文章:

java - Hadoop的TooRunner是线程安全的吗?

hadoop - Hive 查询以根据多个可选键分配分组键

arrays - 数组列值与配置单元中正常列值之间的比较

amazon-ec2 - 如何修复在 pathToPartitionInfo 中找不到目录(从 EMR 上的 HIVE 表中选择/计数)

sql - 如何使复杂的命名范围与关联和其他命名范围 [rails] 配合得很好

mysql - Zend 2 sql查询问题

sql - 如何在 SELECT 子句中创建一个新列并动态地用字符串/列表填充它并满足所有条件语句的连接?

sql - 如何使用robotframework数据库库将utf8字符插入到oracle数据库中

Hadoop cdh4 : reducers finish before mappers are complete

angularjs - 集成 Hive 和 AngularJS?