PostgreSQL-利用递归的方法获得一个数组的所有子数组

WeChatSina WeiboQzoneLinkedInDZoneEvernoteFlipboardLiveJournalPinboardTrelloShare

例子,

实际测试下来,存在性能问题,不知道是否仍然有优化空间, 另外一个实现

回头比较下两个性能差异(目前看来两个都满足我做关联规则时实现多推多的情况)。

WeChatSina WeiboQzoneLinkedInDZoneEvernoteFlipboardLiveJournalPinboardTrelloShare

PostgreSQL-关联规则的纯SQL实现

WeChatSina WeiboQzoneLinkedInDZoneEvernoteFlipboardLiveJournalPinboardTrelloShare

该SQL是基于Apriori算法的一个尝试(代码比较粗糙),并且只实现了一推一的情况,对照MadLib的结果做了验证,没有问题。

关于transaction数据的准备,customer_id 可以是order_id(购物篮), 也可以基于customer_id, brand可以是品牌,产品,品类中的一种,或者品类和品牌的组合(如果需要的话,比如category||’~’||brand)。 结果,可以根据需要对confidence, support和lift进行筛选。 Todo,后续可能会依据PostgreSQL的Array来把所有可能的子集都查出来,然后生成完整的关联规则。  

WeChatSina WeiboQzoneLinkedInDZoneEvernoteFlipboardLiveJournalPinboardTrelloShare

SAS 连PostgreSQL的几种方法

WeChatSina WeiboQzoneLinkedInDZoneEvernoteFlipboardLiveJournalPinboardTrelloShare

SAS 9.4之前,需要ODBC的方式连接PostgreSQL(记得提前配置好DSN),这些方法不仅仅实用于PostgreSQL,很多常用的数据库都可以通过ODBC或者直接连接的方式访问。 方法一,ODBC里执行PostgreSQL的SQL语句

方法二,建逻辑库

方法三,不使用DSN,而是配置ODBC.ini 配置文件(未测试过,这个比较适合Linux环境)

方法四,SAS 9.4开始可以直接连接PostgreSQL等多种数据库了,使用更简单了,

  SAS导入PostgreSQL的注意事项, PostgreSQL鼓励使用Text(不指定长度的varchar),但SAS会因为它不指定长度,而使用默认的最大长度(1024),这样导致SAS库变得非常大,而访问非常缓慢,如下图所示,在PostgreSQL里,clustername是text,clustername1则是varchar(20),所以记得重新定义下长度,这种情况下,ODBC里执行PostgreSQL的命令相对最好用。   P.S. 从SAS9.4开始,SAS/ACCESS 接口增加了更多的数据库支持, Amazon Redshift, Aster, …

WeChatSina WeiboQzoneLinkedInDZoneEvernoteFlipboardLiveJournalPinboardTrelloShare

实用SAS 代码片段

WeChatSina WeiboQzoneLinkedInDZoneEvernoteFlipboardLiveJournalPinboardTrelloShare

SAS表的Name是类似_COL0,_COL1,_COL2这样的字段,Label是中文名,直接导出到PostgreSQL的话,字段实用的是Name,

这时候需要做rename,代码,

 

WeChatSina WeiboQzoneLinkedInDZoneEvernoteFlipboardLiveJournalPinboardTrelloShare

图解SQL关联查询

WeChatSina WeiboQzoneLinkedInDZoneEvernoteFlipboardLiveJournalPinboardTrelloShare

SQL 的连接(JOIN)语句将数据库中的两个或多个表组合起来.[1] 由”连接”生成的集合, 可以被保存为表, 或者当成表来使用. JOIN 语句的含义是把两张表的属性通过它们的值组合在一起. 基于 ANSI 标准的 SQL 列出了五种 JOIN 方式: 内连接(INNER), 全外连接(FULL OUTER), 左外连接(LEFT OUTER), 右外连接(RIGHT OUTER)和交叉连接(CROSS). 在特定的情况下, …

WeChatSina WeiboQzoneLinkedInDZoneEvernoteFlipboardLiveJournalPinboardTrelloShare

VirtualBox-如何禁止主机和虚拟机之间同步时间

WeChatSina WeiboQzoneLinkedInDZoneEvernoteFlipboardLiveJournalPinboardTrelloShare

有时候需要在虚拟机里修改时间,但修改的时候,会自动改回来,因为VirtualBox默认会把Host的时间同步给Guest,那有没有办法禁止呢?经过一番寻找,找到了答案,

 

WeChatSina WeiboQzoneLinkedInDZoneEvernoteFlipboardLiveJournalPinboardTrelloShare

如何实现VirtualBox与VMware之间虚拟机互转

WeChatSina WeiboQzoneLinkedInDZoneEvernoteFlipboardLiveJournalPinboardTrelloShare

VirtualBox转VMware 通过VirtualBox导出虚拟电脑(ova) 使用VMware打开VirtualBox导出的虚拟电脑(ova) VMware转VirtualBox 下载VMware Open Virtualization Format Tool 安装 命令下运行

  导入ovf   How To Convert Virtual Machines Between VirtualBox …

WeChatSina WeiboQzoneLinkedInDZoneEvernoteFlipboardLiveJournalPinboardTrelloShare

R语言下如何获得正确的文件编码

WeChatSina WeiboQzoneLinkedInDZoneEvernoteFlipboardLiveJournalPinboardTrelloShare

一个UTF-8的csv文件(可以在Windows下用notepad新建一个包含中文字符的文件,并在保存时编码选择UTF-8),在mac OS下读取没有任何问题,

同样的代码,在Windows下报错,

即使指定编码,输出仍然是乱码,

使用Linux下的file(检测文件编码及类型的程序),得到信息如下,

网络搜索后,找到正确的解决办法,

没有想到,Windows下读取个文件还这么麻烦,得知道确切的编码,那有没有办法自动侦测编码或者简化工作呢? 把Linux的file编译为Windows下可以执行的程序,这样可以通过命令后的方法先获得文件的编码,或者把file.exe和magic.mgc(用于判断文件类型和编码的数据库文件)一起丢进Windows目录,然后使用下面两个命令中的一个,

如果有多个文件,可以考虑把编码进行统一,推荐软件iconv 做批量编码转换。 当然你也可以下载笨重的Rtools(最新版本103M,包含了file,版本比较老,但不包含iconv)。 P.S. 网上寻找R语言版本的文件编码侦测包,寻找到了两个,wand 和 Ruchardet , wand其实就是基于file做了简单的封装,但不能区分UTF-8 与 UTF-8-BOM(当然可以通过description来获得正确的版本信息, …

WeChatSina WeiboQzoneLinkedInDZoneEvernoteFlipboardLiveJournalPinboardTrelloShare

如何访问局域网内PostgreSQL服务器

WeChatSina WeiboQzoneLinkedInDZoneEvernoteFlipboardLiveJournalPinboardTrelloShare

提前休假回家过中秋,却没有能好好休息,客户赶进度,而服务器在局域网内,没有通过路由设置把端口暴露出来,也没有VPN,可以远程桌面(RDP),虽然可以访问,但速度太慢,于是想到了前段时间下载的ngrok,一款内网转发服务软件,需要注册才支持TCP服务,试了下,效果还不错。 如果临时使用ngrok是不错的选择,不过免费版本,只能映射一个端口,其实如果自己有外网的服务器或者虚拟主机,plink(windows下使用,linux推荐autossh,plink需要自己写个批处理命令实现for循环,好在短线后自动连接,我写的是死循环)更方便些,不限制端口个数,自己的服务器,安全也能更加保证。

WeChatSina WeiboQzoneLinkedInDZoneEvernoteFlipboardLiveJournalPinboardTrelloShare

R语言mapply应用一例

WeChatSina WeiboQzoneLinkedInDZoneEvernoteFlipboardLiveJournalPinboardTrelloShare

需求:求data frame下两列有交集的元素个数,例如,m2和m3存储的都是以逗号分割的字符串,现在求m2和m3的交集,

答案,

 

WeChatSina WeiboQzoneLinkedInDZoneEvernoteFlipboardLiveJournalPinboardTrelloShare