【问题标题】:How can I determine the quarter for a given month in DataStage Transformer stage?如何在 DataStage Transformer 阶段确定给定月份的季度?
【发布时间】:2020-12-29 18:28:28
【问题描述】:

我想为数据记录制作一个标签,列出年份和季度,例如 2014-Q2。

在 SQL 中,我可以通过以下方式完成此任务:

SELECT VARCHAR(YEAR_) CONCAT '-Q' CONCAT(CAST(CEILING(CAST(MONTH_) AS
    DECIMAL(4, 2)) / 3) AS CHAR(1))) AS QTR_ FROM TABLE

我试图在 DataStage (v 8.5) 中的转换器阶段收集相同的结果,我认为以下粗略推导会起作用:

If
    (Link.MONTH_ =< 3)
    Then (Link.YEAR_ : '-Q1')
Else
    (If
        (Link.MONTH_ > 3 and Link.MONTH_ =< 6)
            Then (Link.YEAR_ : '-Q2')
    Else
        (If
            (Link.MONTH_ > 6 and Link.MONTH_ =< 9)
                Then (Link.YEAR_ : '-Q3')
        Else
            ('Y' : DSLink2.YEAR : '-Q4')
    )
)

也许变压器阶段不是最好的选择,欢迎所有建议,因为现在推导会出错。

【问题讨论】:

    标签: datastage


    【解决方案1】:

    以下推导充分执行:

    If (DataSet.MONTH < 4) Then DataSet.YEAR:"-Q1" Else If (DataSet.MONTH > 3 AND DataSet.MONTH < 7) Then DataSet.YEAR:"-Q2" Else If (DataSet.MONTH > 6 AND DataSet.MONTH < 10) Then DataSet.YEAR:"-Q3" Else DataSet.YEAR:"-Q4"
    

    生产:

    2014-Q1
    2014-Q2
    etc...
    

    【讨论】:

      【解决方案2】:

      取月数,减1,除以3求模,再加1。

      Mod(DataSet.MONTH - 1, 3) + 1
      

      【讨论】:

        猜你喜欢
        • 2020-03-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-22
        • 1970-01-01
        • 2022-01-26
        相关资源
        最近更新 更多