数据治理,是不是一道“送命”题?

‍‍

f98ced0b838eae9c49b076d542201a4a.png

原创:谭婧

很多年以前,企业每天都在想方设法,把手头的数据用好。

钱来货往,大数据和人工智能火起来之后,沉淀的数据一下子多了起来,如何管好+如何用好数据,成为大多数企业的难题。

数据发挥价值是近10-20年才有的概念,这就带出了数据治理。

数据治理,是伴随解决“糟心问题”而生的。

在数据开发的过程中,会冒出各种“糟心事儿”,五花八门(质量、效率、安全等方面)。

而数据治理的任务就是,对于这种“事儿”,来一个“消灭”一个。

有的问题三年五载都消除不了,那就(也)算(得)了(干)。

一直消除不了,就一直有“痛点”。

一般来说,数据治理研究的专家不会说得这么接地气,而是会说:“保障数据准确、全面和完整,为业务创造价值,同时严格管理数据的权限,避免数据泄露带来的业务风险。”

高层听了颔首,员工听了翻白眼。

而且数据治理不“接地气”,工作就得“接地府”。

某位大型互联网科技公司的研发负责人,和公司老总一起出差的时候,抓住时机,用全程航班的时间安利了一把“数据中台”。

老总把知识点吸收得很好,很喜欢,把“组件化”“标准化”“不重复造轮子”都学会了,就安排研发负责人去推动。

闭门研究了一段时间后,研发负责人就拿出一个大图,你干这个,他干那个。完全按照理想化的思路,来了个天翻地覆式的大改动,无异于重新设计。

很多管理层一看到这个“蓝图”都傻眼了,心里又气又恨,脸上还佯装笑容。

表面上夸创新,背地里和哥几个关系好的,交换眼色,把手放在脖子上做了个横刀一抹的动作。

数据中台这块蛋糕,关系到绝大部分数据资产的管理权限,你动了这块蛋糕,也就是动了管理者们的核心利益。

对于各个部门、各事业群的一把手来说,这无疑相当于重新划分“势力范围”。


你画这个蓝图问过我的意见了吗?

没有的话,那可不行。

于是,“齐心协力”把那个研发负责人整下岗了。

最终,这位研发负责人,铩羽而归,离职而去。

数据中台和数据治理是什么关系?

数据中台是解决数据治理问题的方式之一,但不是唯一方式。

数据治理的概念20多年前就有了。

还有一个机构,叫做数据治理研究所(DGI)。

据该所的定义,数据治理就是为了确定一系列的原则和实践,确保数据在其生命周期中的高质量。

之前,一听到数据治理这四个字,人们的条件反射就是安全,管控,规章制度,条条框框。

说白了就是怎么样确保数据安全。

普通员工一听,这不关我的事,那是中高层的事。

公司里有资产放着不用,或者用不好,就是管理水平低,数据资产也一样。

但是,数据越来越多,存储和处理又很费钱。

44f183dc64eec9db177f9ca7f2e4df90.png

有人开始思考:

怎么样把数据作为一个服务提供出来,给整个公司的技术团队,甚至说非技术团队,用起来。

数据孤岛,始终存在,员工想在公司里看到更多数据,成了一项情商测试。

得看人品,看关系。

两个部门之间,即便一个部门的老板批了,对方部门的老板批了,提供数据的方式可能还是发邮件或者U盘拷贝,十分落后。


一些科技企业数据治理的主要“业绩”,就是促进跨部门的数据合作和使用。

大部分传统行业企业还没有数据治理的意识。

即使萌生了一星半点意识,其目标也只停留在合法合规安全管控不出乱子。

甚至,不少传统企业连“促进跨部门数据使用”这个意识都没有。

典型的数据技术部门是什么呢?

比如,美团的数据科学与平台部,京东零售下面的京东技术与数据中心,快手科技主站产品部下面的数据分析部。

百度科技的大数据部,以前级别挺高,现在在百度AI技术平台体系内了。

经过数据治理的一番努力,以前唯有数据技术部门能用的数据,会有更多的部门能用。

以前用不了的数据,现在能用了。

但是,好处也不是白来的,权利和责任是对应的。

原来非数据部门、非技术部门没权利去管理,同时也没有义务去维护这些数据的质量。

现在不一样了,有权利去用,也要有更大的责任,去维护数据质量。

负责数据治理的团队,即使看到了“糟心问题”在某几个团队之间扯皮,也不能直接介入处理。

要把问题整理成“共通的痛点”,先给决策层做提案,做建议,然后才有下一步。

如此一来,很多数据治理问题,经年历久,拖成了“冤案”。

短期还是依靠发邮件或者是U盘拷贝数据,如此这般,至少还能用上。

有些公司被逼做“数据治理”的动力,也是启动数据治理的大背景,是数据质量存在问题。

比如数仓的及时性、准确性、规范性,数据应用指标的逻辑一致性等问题。

数据的质量影响到使用,不得不干。

过去,企业内部开发的大部分数据系统,是为了解决某一个业务的问题而开发的。

在开发数据系统的时候,并没有考虑到将来这部分的数据资产要用在别处(其他业务、其他系统、其他领域所用)。

一段时间之后,别人用到这些数据的时候,不管从技术的性能,还是各种服务 SLA (服务级别协议)的角度来讲,可用性都较低。

变化一定是越来越多的,比如说数据源从单一,变成了多个。

从一朵云到多云。

种类由关系型数据库为主,变成文档、图像、视频、声音、时间序列。

比如REI是一个美国人喜爱的户外用品零售商,REI使用Tableau整合了来自75个数据源的数据,使得REI可以分析完整的客户体验。

数据的使用从BI报表、看板、大屏,到ad-hoc商业分析、数据科学分析、机器学习应用。

还有,原来以数据仓库为中心的技术栈相对简单,只需要管好ETL的过程、存储过程、查询引擎、可视化,就可以了。

现在可好,技术栈爆炸式地增长,要管的东西掰着手指头数不过来。

cb6a0c228ce7f97166f424ff617f5713.png

好的数据治理,能够让企业转身就获得新的商业模式。

Huel这家代餐食品公司就是这么说的,而且他们还说能够以98%的准确率来预测一月份每天的销售量(该公司业务特点是预测一月份销量最难)。

无论出于何种无奈,数据治理迟早要做,极少数走得快的,甚至用上了“超级智能化”服务。

反正,穷的穷死,富的富死,还有很多企业焦虑得要死。

本文在创作过程中,采访了杨荟博士,他是一位连续创业者,埃森哲中国数据科学和AI团队创始人,现任某跨国快销品公司数据和AI总监。

(完)

更多阅读:

1. 搞深度学习框架的那帮人,不是疯子,就是骗子

2. DPU加持下的阿里云如何做加密计算?

3. 超级计算机与人工智能:大国超算,无人领航

4. 隐私计算:消失的人工智能 “法外之地”

5. 售前,航空母舰,交付,皮划艇:银行的AI模型上线有多难?

6. 我怀疑京东神秘部门Y,悟出智能供应链真相了

7. 开源系列:AI对抗攻防算法开源平台,哪家强?

8. “重型卡车自动驾驶,无量产,则无意义”赢彻科技CTO杨睿刚博士观点

9. 梅长苏:推荐系统难道就是琅琊榜?

10. 中美神同步,“网约车司机不配有劳动保障吗? 

11.电影《失控玩家》:软件2.0,让游戏角色“觉醒”了?

39b42c26b0ae03eeb60a7b2f9e908dd6.png

这次分离,

要说再见

最后,再介绍一下主编自己吧。

我是谭婧,科技和科普题材作者。

为了在时代中发现故事,

我围追科技大神,堵截科技公司。

生命短暂,不走捷径。

个人微信:18611208992。

还想看我的文章,就关注“亲爱的数据”。  

首先,需要将 WT588D 的片选信号 CS、时钟 CLK 和数据 DATA 脚连接到 STM32F103C8T6 的 GPIO 引脚。同时也需要将 RESET 信号连接到 STM32F103C8T6 的 GPIO 引脚,并保持高电平。 然后,可以通过以下步骤实现 WT588D 的三线串口控制模式: 1. 拉低 RESET 信号,等待 5ms 后拉高,等待 17ms。 2. 拉低片选信号 CS,持续 2ms~10ms,以唤醒 WT588D。 3. 在时钟的上升沿接收数据,时钟周期推荐使用 300us。 4. 数据成功接收后,等待 20ms 后检测忙信号 BUSY。 5. 发送数据时,先发送低位,再发送高位。 6. 发送完成后,将数据、时钟和片选信号均保持高电平。 示例代码如下: ```c #include "stm32f10x.h" #define CS_PIN GPIO_Pin_0 #define CLK_PIN GPIO_Pin_1 #define DATA_PIN GPIO_Pin_2 #define RESET_PIN GPIO_Pin_3 #define CS_PORT GPIOA #define CLK_PORT GPIOA #define DATA_PORT GPIOA #define RESET_PORT GPIOA void delay_us(uint32_t us) { uint32_t count = us * (SystemCoreClock / 1000000) / 5; while(count--); } void WT588D_Reset() { GPIO_ResetBits(RESET_PORT, RESET_PIN); delay_us(5000); GPIO_SetBits(RESET_PORT, RESET_PIN); delay_us(17000); } void WT588D_Wakeup() { GPIO_ResetBits(CS_PORT, CS_PIN); delay_us(2000); GPIO_SetBits(CS_PORT, CS_PIN); } void WT588D_SendData(uint8_t data) { uint8_t i; for(i = 0; i < 8; i++) { if(data & 0x01) GPIO_SetBits(DATA_PORT, DATA_PIN); else GPIO_ResetBits(DATA_PORT, DATA_PIN); GPIO_SetBits(CLK_PORT, CLK_PIN); delay_us(300); GPIO_ResetBits(CLK_PORT, CLK_PIN); delay_us(300); data >>= 1; } } void WT588D_PlaySound(uint8_t sound) { WT588D_Wakeup(); WT588D_SendData(sound); WT588D_SendData(0x00); GPIO_SetBits(CS_PORT, CS_PIN); delay_us(20000); while(GPIO_ReadInputDataBit(DATA_PORT, DATA_PIN) == 0); } int main() { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = CS_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(CS_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = CLK_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(CLK_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = DATA_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(DATA_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = RESET_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(RESET_PORT, &GPIO_InitStructure); while(1) { WT588D_Reset(); WT588D_PlaySound(0x01); delay_us(5000000); } } ``` 注意:以上代码为示例代码,需要根据实际硬件连接和操作流程进行修改。同时,为了保证时序的准确性,可以使用定时器或者延时函数来控制时序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值