数据源 Excel 中出现两种不同的时间格式应该如何转换

0
这个实际上是 QlikSense,但估计 QlikView 应该也是同样的处理方式。
可以先看我的数据源,这个数据源我们是不可以修改的,因此没有办法在 Excel 上格式化。
2015-05-12_223210.png

可以看到有时间格式,最后的 17 号的那个是一个例外。
2015-05-12_223232.png

可以看到我测试过很多不同的方式,也参考过曹大神的这篇文章 http://www.flybi.net/article/375
2015-05-12_223327.png

但是发现两种格式不能同时处理,只能识别一种。我同时使用过解释函数和内嵌函数,可以看到不同的使用方式的效果。
2015-05-12_223243.png

我把测试文件也放上来了,把后缀.zip 改为 .rar 即可。
有知道如何解决这个问题的吗?
已邀请:
0

BIWORK - 热衷于微软BI技术,技术架构和解决方案! 2015-05-12 回答

已经搞定了,在 QQ 群里面问了一下,有几个朋友提了几个方法,尝试了一下搞定了,特意分享一下。

苦咖啡(1428215718)  10:54:13 PM
date#(,'DD/MM/YYYY')试试
阳光²º¹⁵(593564)  10:55:33 PM
@BIWORK 很简单啊
用过滤法
过滤掉/2014
和2014/
然后在同一加上2014/
BIWORK(2796543753)  10:57:10 PM
 @苦咖啡 是这样的吗?
 这个不行
BIWORK(2796543753)  10:58:23 PM
@阳光²º¹⁵ 怎么过滤啊? 这个 /2014 不是写死的,也可能有其它的年份
阳光²º¹⁵(593564)  10:58:51 PM

就这两种格式吗?
Leo LOU(231575072)  10:59:36 PM
一个字符型的,一个date
阳光²º¹⁵(593564)  10:59:50 PM
还有一种办法
BIWORK(2796543753)  10:59:59 PM

阳光²º¹⁵(593564)  11:00:01 PM
你做个中间的时间表
Leo LOU(231575072)  11:00:03 PM
isnum判断下
BIWORK(2796543753)  11:00:13 PM
上面是我尝试的

Leo LOU(231575072)  11:00:31 PM
是数字的当date处理
不是的就按照字符处理
阳光²º¹⁵(593564)  11:00:48 PM
一个标准的时间对应两种不同格式的时间
这样更简单
BIWORK(2796543753)  11:01:37 PM
每太理解你们的意思
阳光²º¹⁵(593564)  11:02:16 PM
弄个新的excel
BIWORK(2796543753)  11:02:28 PM
数据源是不能动的
阳光²º¹⁵(593564)  11:02:29 PM
做个时间的表啊
你自己新做一个
然后去跟你原来的匹配
阳光²º¹⁵(593564)  11:04:14 PM
时间中间表:
标准时间字段,特殊时间格式1,特殊时间格式2
阳光²º¹⁵(593564)  11:05:27 PM
然后用你数据源的时间格式做两张表分别与特殊时间格式1和特殊时间格式2key关键
关联
BIWORK(2796543753)  11:06:48 PM
不至于这么弱吧,Qlik 这种转换也要这么来做
阳光²º¹⁵(593564)  11:07:20 PM
是你自己数据源不规范
BIWORK(2796543753)  11:07:55 PM
数据源不规范这个是没有办法的 
阳光²º¹⁵(593564)  11:08:17 PM
所以就得特殊处理
BIWORK(2796543753)  11:08:42 PM
ETL 的脚本处理都要这么处理是不是太麻烦了
Leo LOU(231575072)  11:08:45 PM
isnum判断,转不过去的当字符取年月日,用makedate造日期
不需要自己拖excel
Leo LOU(231575072)  11:09:51 PM
建立时间维表也只需要自己建脚本用autogenerate创建,不然维护麻烦
BIWORK(2796543753)  11:10:37 PM


搞定了,结合你们两个人的意见搞定了!
BIWORK(2796543753)  11:11:38 PM
@Leo LOU  NB!

BIWORK(2796543753)  11:13:01 PM
@Leo LOU 你在北京吗? 要不考虑下我们公司的这个职位  http://www.bijob.cn/position/105
---------------------------------------------------------------------------------------------------------
以下为解决方案 -
if(isnum("Posting Date"),Date(TRIM("Posting Date"),'YYYY-MM-DD'),Date(Date#(TRIM("Posting Date"),'YYYY/MM/DD'),'YYYY-MM-DD')) AS Date7,

2015-05-12_231532.png

先判断这个字段是否是数字 (需要结合曹大神的这篇文章看 http://www.flybi.net/article/375 ),如果是数字就是使用 Date 直接格式化,如果不是数字是字符串那么先按照已有样式转换,然后再转换为指定格式的日期。
 
 
0

天桥下的郑成功 - Hadoop大数据开发工程师、数仓架构师、熟悉数据仓库设计、Hadoop、Spark、HBase、Hive、SSIS等开发 2015-05-14 回答

学习了,先mark一下 以后慢慢学习
0

yuzou 2015-07-03 回答

数据源是excel数据吗?
 
0

yuzou 2015-07-03 回答

excel里的日期格式可能会有“20130615,2013.06.21,2013_06_30,6-3-14,”等

要回复问题请先登录注册