这是我应该在Informatica中完成的任务。我想简要介绍可能的解决方案。我并不特别需要查询,只是SQL / Oracle中的步骤可能会有很大的帮助。
问题陈述:
NW Telecommunications是印度蜂窝通信的服务提供商。他们在印度的所有州开展业务。作为其业务运营的一部分,他们收集有关服务取消原因的详细信息,以改进其客户保留策略。他们现在有兴趣了解客户停止服务的主要原因。
以下是源表的结构
NWT_Connection_Details
Phone_No
SIM (primary key)
Connection_Start_Date
Rate_Plan_Id
Connection_Status
Connection_Closure_Date
Can_Reason_Id
Cust_Id (foreign key)
Home_Location
NWT_Cancellation_Reason
Can_Reason_Id (primary key)
Can_Text
取消原因表中的数据:
Can_Reason_Id Can_Text
NW Network Issues
MNP Porting to a competitor
RP Rate Plan Issue
RL Relocation
CS Unsatisfactory customer service
结果表是一个汇总表,其中包含已取消的汇总。目标表的结构如下。
Cancellations_Summary Can_Reason 取消数量 Duration_of_Service 区
注意:Duration_of_Service是一个像< 1个月,1至3个月,3至6个月,6至12个月,并且> 12个月
示例目标表数据:
NW 18 1 to 3 South
NW 5 1 to 3 South
CS 25 3 to 6 North
答案 0 :(得分:1)
这是执行您想要的基本查询:
select cr.can_text, count(*)
from nwt_connection_details cd join
nwt_cancellation_reason cr
on cd.can_reason_id = cr.can_reason_id
group by cr.can_text
order by count(*) desc
我正在回答,因为这给了一个评论某些事情的机会。首先,您没有理由考虑在Informatica中进行此类查询。这是数据库的设计类型。 Oracle是最好的方法。
其次,这可能不是你想要的一切。您需要考虑日期,客户类型和任期。通常,有一个OLAP系统可以解决这些类型的请求(如果数据不是太大,可能是Excel中的数据透视表)。可以使用Informatica或使用Oracle的查询来加载这样的OLAP系统。