Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 如何获取两个日期之间的所有缺失天数_Date_Informatica_Informatica Powercenter - Fatal编程技术网

Date 如何获取两个日期之间的所有缺失天数

Date 如何获取两个日期之间的所有缺失天数,date,informatica,informatica-powercenter,Date,Informatica,Informatica Powercenter,我将首先尝试从抽象的层面解释这个问题: 我有X个数据量作为输入,它总是有一个字段日期。在此之前,作为输入(在某个过程之后)输入到表中作为输出的日期。现在,我被要求把输入日期和收到的最小日期和从那一刻起一年之间的任何日期放在一起。如果在这两个日期之间的某一天没有输入,则所有字段都必须带有0或等效值 例如。我有两个输入。一个是“2017年3月18日”,另一个是“2018年3月18日”。我现在需要为“2017年3月18日”和“2017年4月18日”之间的所有缺失日期创建输出数据。因此,输出'19/03

我将首先尝试从抽象的层面解释这个问题:

我有X个数据量作为输入,它总是有一个字段日期。在此之前,作为输入(在某个过程之后)输入到表中作为输出的日期。现在,我被要求把输入日期和收到的最小日期和从那一刻起一年之间的任何日期放在一起。如果在这两个日期之间的某一天没有输入,则所有字段都必须带有0或等效值

例如。我有两个输入。一个是“2017年3月18日”,另一个是“2018年3月18日”。我现在需要为“2017年3月18日”和“2017年4月18日”之间的所有缺失日期创建输出数据。因此,输出'19/03/2017',每个字段为0,第20个和第21个字段相同,以此类推

我知道如何通过编程实现这一点,但在powercenter上我不知道。我被告知要做以下事情(我已经做了,但我想知道一个更好的方法):

获取最小日期,第0天。然后,使用聚合器创建365个字段,每个字段都有“day0”+1、day0+2,依此类推,以创建一个人工年份

之后,我们会进行一些转换,比如对日期进行排序,在日期之间进行联合,以便为加入者准备好数据。joiner的思想是在原始数据和将所有字段都设置为0的数据之间进行完全的外部联接,这些数据是我们从以前的聚合器获得的

然后路由器用它的一个组选择具有实际日期的数据(以及没有空值的字段)和所有字段都为空的另一个组,然后给所述字段一个0以最终写入表

首先,我想知道怎样才能做到这一点,不再需要在一个日期上增加365天。如果我在一年内做同样的工作10年,这个任务会很快变得可笑

我想知道一个XOR类型的操作,或者其他一些函数,它们可以减少我(可能是错误的)觉得简单的任务所需要完成的步骤数。目前,我需要5个步骤来知道两个日期之间缺少哪些日期,一个最小日期和一年后的日期


我已经尽可能地清楚,但如果我在任何时候失败了,请让我知道

我不确定聚合器应该做什么? “完全外部”联接也一样吗?常量端口上的正常连接可以:)c

你能计算出“加入者”之前所需的“副本”数量吗?在这种情况下,配置为返回“所有行”和小于或等于谓词的查找有助于使映射更具可读性

在任何情况下,您都需要一个助手表(或文件),其数字序列介于1和潜在副本数(或更多)之间
我在仓库中使用我们的时间维度,从1753-01-01开始每天有一行,接下来的日子有200000行,还有一个主整数列,值从1到更高……

我不确定聚合器应该做什么? “完全外部”联接也一样吗?常量端口上的正常连接可以:)c

你能计算出“加入者”之前所需的“副本”数量吗?在这种情况下,配置为返回“所有行”和小于或等于谓词的查找有助于使映射更具可读性

在任何情况下,您都需要一个助手表(或文件),其数字序列介于1和潜在副本数(或更多)之间
我在仓库中使用我们的时间维度,从1753-01-01开始,每天有一行,接下来的日子有200000行,还有一个主整数列,值从1到更高……

您已经确定您知道如何通过编程实现这一点,公平地说,这个问题更适合这种解决方案。。。但这并不排除powercenter,只需将这两个日期输入到java转换中,应用一些代码生成它们之间的所有日期,并为每个日期输出一条记录。Java转换是记录生成的理想选择

您已经确定,您知道如何以编程方式实现这一点,公平地说,这个问题更适合这种解决方案。。。但这并不排除powercenter,只需将这两个日期输入到java转换中,应用一些代码生成它们之间的所有日期,并为每个日期输出一条记录。Java转换是记录生成的理想选择

您已经确定,您知道如何以编程方式实现这一点,公平地说,这个问题更适合这种解决方案。。。但这并不排除powercenter,只需将这两个日期输入到java转换中,应用一些代码生成它们之间的所有日期,并为每个日期输出一条记录。Java转换是记录生成的理想选择

好的。。。因此,您可以重写源限定符,以便在选择查询本身中实现这一点(我给出了基于Oracle的示例,这是我所习惯的,并且我假设中的数据来自一个表)。我在这里查阅了连接语法


从tablea中选择(MIN(tablea.DATEFIELD)+levquery.n-1)作为端口1,(从DUAL CONNECT BY LEVEL中选择级别n您已经确定您知道如何以编程方式执行此操作,公平地说,此问题更适合于此类解决方案……但这并不排除powercenter,只需将这两个日期输入java转换,应用一些代码来生成它们之间的所有日期,并创建记录即可。)Java转换的输出是记录生成的理想选择

好的……因此,您可以重写源限定符以在选择查询本身中实现这一点(我给出了基于Oracle的示例,这是我所习惯的,并且我假设您的数据来自一个表)


选择(MIN(tablea.DATEFIELD)+levquery.n-1)作为tablea中的端口1,(从DUAL CONNECT中选择级别n,按级别右侧)。据我所知,公司内部禁止进行java转换。根据政策,这是不被接受的。遗憾的是,这是真的