【Kimball维度建模】+【阿里巴巴中台—OneData实施】

Kimball维度建模 最简洁的语言描述维度建模的理论和流程 阅读详情

一、Kimball维度建模

1.前生今世

维度建模出自Ralph Kimall的《The DataWarehouse Toolkit-The Complete Guide to Dimensona Modeling》(《数据仓库工具箱》)一书,是十分流行的数仓建模理论。

维度建模从根本上来讲是以结果为导向的,由数据消费到底层数据的思路。维度建模是一种比较容易理解的业务数据化的方法和思维。个人认为,维度建模可以很好地适应大规模数据响应项目交付的场景。

2.Kimball维度建模四大过程

1)选择业务过程

业务过程是主体完成的活动,是维度建模的基础。客观来描述很抽象,举例来说明。下单、付款、发货和完成订单都可以叫作业务过程,完成活动的主体有些差异。去理解和描述业务过程是后续过程的前置条件。

2)声明粒度

声明粒度是建模过程中非常精细的一环,因为粒度是要清晰的表名事实表的每一行数据代表的意义。还是举例来说明,订单表每一条数据都是一个独立的订单(父子订单等情况后续博客会再论述)。后续维度和事实必须要和此时声明的粒度保持一致,所以此过程是十分精细的一环。同时要提一下,声明粒度为了保证模型的灵活,后续能满足更丰富的业务需求,建议从原子粒度(不可再拆分的粒度)角度去声明粒度。

3)确认维度

声明粒度完成以后,标示事实表的最小单位,两者的粒度是要统一的,那维度的确认也就水到渠成了,确认维度,主要是要描述事实表的出处和所处环境的维度信息。依旧举例来说明,根据上述的订单来说,一个订单的维度有什么,交易双方人员、商品和时间等信息,这就确认了维度。

4)确认事实

确认事实就是来确认这个业务过程的度量是什么,事实的度量要和声明的粒度、确认的维度的粒度保持一致。有点拗口,最后一次的举例说明,一个订单的金额是就是一个度量。而度量可分为三种类型:可加、半可加和不可加(后续博客会继续论述)。

二、OneData体系

OneData体系实时过程如下:

1.数据调研

1)业务调研

数据仓库的建设,业务十分重要,调研直接关乎数据仓库是否是成功的。调研内容至少包含需求的业务流程、业务流程所属业务模块和业务模块所属业务线。

2)需求调研

需求调研简单来说就是调研运营和分析等角色的需求。通常有两个种方式去做需求调研,第一种,去和运营和分析去沟通他们的需求;第二种,分析现在已有的报表系统和数据消费需求。

2.架构设计

1)数据域划分

数据域指的是面向业务分析,将业务过程或者维度进行抽象的集合。业务过程是指一个不可拆分的行为事实。

举例说明:*业务过程:下单、付款、收货  *数据域:交易域。

2)构架总线矩阵

第一步、明确数据域下所有的业务过程。

第二步、明确业务过程和维度的关系,定义数据域下的业务过程和维度。

3)规范定义

定义指标体系内的原子指标、业务限定、时间周期和派生指标(命名规则可以后面在规划)。

4)模型设计

主要是CDM层的设计(前面博客有介绍中台分层),主要包括维表、事实明细表和汇总明细表的设计(后续博客会详细介绍)。

实时流程图:

2024年最全数仓实践:浅谈 Kimball 维度建模_kimball维度建模,2024-2024蚂蚁金服大数据开发面试真题解析 雪花架构是对星形架构维度表的规范化,比如上述的商品表例子,在雪花架构中,其每一行仅存储品牌 ID ,而品牌的所有其他信息(包括品牌名称、拥有者、注册地等所有描述信息)都存储在单独的品牌维度表内。星形架构中,每个维度都是均等的,所有维度表都是进入事实表的对等入口,用户可以从任一维度、任一维度属性或者任意多个维度组合、任意多个维度属性组合,方便地对数据进行过滤和聚合(汇总、均值、最大、最小等)操作,而且非常符合业务分析直觉。业务是多变的,模型的设计必须能够经受住业务多变的需求。 阅读详情

相关推荐

阿里巴巴大数据实践:OneData模型实施介绍

如何从具体的需求或项目转换为可实施的解决方案,如何进行需求分析、架构设计、详细模型设计等,则是模型实施过程中讨论的内容。本节先简单介绍业界常用的模型实施过程,然后重点讲解阿里巴巴OneData模型设计理论及实施过程。 1.业界常用的模型实施过程 **Kimball模型实施过程 ** Kimball维度建模主要探讨需求分析、高层模型、详细模型和模型审查整个过程。 构建维度模型一般要经历三个阶段:第一个阶段是高层设计时期,定义业务过程维度模型的范围,提供每种星形模式的技术和功能描述;第二个阶段是详细模型设

阿里云云栖号 2289

【数据仓库设计基础(二)】维度数据模型:Kimball数仓建模方法论

维度数据模型

hiliang521的博客 2664

阿里OneData模型演进解析:从3层架构到DataWorks模板的4个关键决策

本文深入解析阿里巴巴OneData模型从3层架构到DataWorks模板的演进历程,揭示四个关键决策如何支撑万亿级实时分析能力。通过维度建模改造、公共层建设、流批一体架构及DataWorks模板化,阿里实现数据仓库效率与成本的最优平衡,为大数据处理提供行业范本。

djph26741的博客 538

Kimball 维度建模理论

雪花模型指的是在星型模型的基础上,维度表再关联维度表,这种结构应该在OLTP场景下会用这样的结构,在数仓下基本没人使用。如果业务数据存储为这样的结构,常常将数据打平,即合并成一张维度表,这样它将会上级为星型模型。kimball 维度建模,星型和星座 模型核心在于将事实表(过程数据通常不变的数据)与主体信息表(常更新的数据,有维度信息)逻辑进行拆分。在实际业务中,星座模型才是数仓建设的最终归属,它也是建立在星型模式下,不同的是只是和其他事实表共享了维度表,即存在多张事实表,共享一张维度表的情况。

maple_son的专栏 1887

数据仓库建模方法论:起源、发展与深度对比解析

维度建模(Kimball理论) • 起源:由Ralph Kimball于1996年提出,核心思想是将数据组织为星型或雪花模型,以支持高效的多维分析。其理论基础来自《数据仓库工具箱》。 • 发展:从早期的星型模型到星座模型,逐步形成“业务过程→粒度→维度→事实”四步法,强调面向分析场景的灵活性和高性能。 • 关键贡献:提出事实表与维度表分离设计,解决OLAP场景的查询效率问题。范式建模(Inmon理论) • 起源:由Bill Inmon在1991年提出,主张通过3NF(第三范式)构建企业级数据仓库(EDW),

Aaron_PHPer的博客 1474

数仓实践:浅谈 Kimball 维度建模

我们不管是基于 Hadoop 的数据仓库(如 Hive ),还是基于传统 MPP 架构的数据仓库(如 Teradata ),抑或是基于传统 Oracle 、MySQL 、SQL Server 关系型数据库的数据仓库,其实都面临如下问题:怎么组织数据仓库中的数据?怎么组织才能使得数据的使用最为方便和便捷?怎么组织才能使得数据仓库具有良好的可扩展性和可维护性?Kimball ...

云祁QI 2207

[读书笔记]《大数据之路》——阿里数据整合及管理体系——OneData模型

阿里数据整合及管理体系——OneData模型 摘要# 阿里的《大数据之路》第9章介绍了其内部进行数据整合及管理的方法体系和工具OneData。他们在这一体系下,构建统 、规范、可共的全域数据体系,避免数据的冗余和重复建设,规避数据烟囱和不一致性,了解他们的建模理论,有助于扩宽我们对数据建模的视野和思考。 1. 概述# 阿里巴巴集团大数据建设方法论的核心 :从业务架构设计到模型设计,从数据研发到数据服务,做到数据可管理 、可追溯、可规避重复建设。 1.1 定位及价值# 定位:建设统一的、规范化的数

fhw10204130的专栏 683

数仓建模—OneData

OneData 就是一个听起来高大上的词,但其实本质上还是数仓建设那一套,总结起来就一个词——统一,但是这个词听起来容易做起来难。OneData的核心就是统一定义、标准建模、规范研发,工具保障统一定义 对个性化的数据指标统一规范定义标准建模 建立数据公共层对模型架构进行标准规范设计和管理规范研发 将建模方法体系贯穿在整个数据研发流程工具保障 通过研发一系列的工具保障方法体系的落地实施。

2401_84052244的博客 3136

【读书笔记】阿里巴巴大数据实践:阿里巴巴数据整合及管理体系(第9章)

用一套话语体系规范定义所有指标——OneData 体系。

xiaoyangyangxiong的博客 492

高通camera调试经验总结

修改AF对焦模式 adb shell setprop vendor.debug.camera.af.manual 2 //使能手动对焦 adb shell setprop vendor.debug.camera.af.manual 0 //使能自动对焦

weixin_43381364的博客 1万+

5.44GHz超高精度!STM32G474的HRTIM时钟配置避坑指南

本文深入解析STM32G474内置高分辨率定时器的时钟配置要点,帮助工程师避开常见陷阱。文章详细阐述了从系统时钟到5.44GHz等效时基的路径,重点分析了预分频器乘法器、周期计算溢出、影子寄存器同步等关键配置,并结合实测波形对比,确保HRTIM在电机控制、数字电源等精密应用中发挥极限性能。

book8的博客 522

数仓建模理论核心要义

维度建模(Kimball架构)全链路数据治理-智能数据建模

lihuazaizheli的博客 511

Python实战:5分钟搞定高德地图API批量地址转经纬度(附完整代码)

本文提供了一套完整的Python解决方案,利用高德地图Web服务API,实现批量地址到经纬度坐标的自动化转换。文章包含从API申请、核心代码编写到错误处理与性能优化的全流程实战指南,并附赠数据可视化方法,帮助数据分析师和开发者快速提升地理信息处理效率。

weixin_29047919的博客 582

回顾 | 阿里数据中台建模

阿里中台的概念,可以说是近些年来的颇为火爆的概念。从十余年前的阿里在内部完成这一过程,并提出了“中台”概念;到后面中台概念逐步被外部接受并在2019年爆火兴起。数据中台爆火背后,既有传统企...

大数据星球-浪尖 775

三态门Multisim电路仿真——硬件工程师笔记

三态门原理及应用摘要 三态门是具有高电平(1)、低电平(0)和高阻态(Z)三种输出的逻辑电路,通过使能端(EN)控制状态切换。高阻态时输出端等效断路,避免信号冲突。其核心应用包括: 总线系统:多设备共享总线时,仅使能选中设备的三态门,其余保持高阻态,防止干扰。 数据选择器:利用三态门切换多路输入信号,简化电路设计。 实现方式分两种: TTL三态门(三极管构成):低电平使能有效,仿真验证输出逻辑与高阻态。 MOS三态门(MOS管构成):高电平使能有效,仿真显示使能信号控制输出状态。 文中还附硬件工程师笔试面试

XU157303764的博客 2006

C#读取和写入excel表数据--手把手教详解

C#读写excel数据详解

如如水的博客 4055

数据建模实战:从理论到落地,看阿里巴巴如何构建高效数据仓库体系

本文深入探讨阿里巴巴构建高效数据仓库体系的实战经验,从数据建模的核心价值到维度设计技巧,再到事实表的关键细节。通过分层建模和OneData体系,阿里巴巴将查询性能提升百倍,计算成本降低60%,为大数据处理提供了宝贵参考。

weixin_34221775的博客 321

汽车电子 静态电流

**静态电流(Static Current 或 Quiescent Current, IQ)** 是指汽车在 **熄火 / 关机 / 睡眠模式** 下,电子控制单元(ECU)或电子元件仍然保持基本功能(RTC、存储保持、Wake-up 监测、CAN/LIN 监听等)所消耗的微弱电流。

天赐好车的博客 759

【阿里巴巴大数据实践之路学习记录】第九章-数据整合及管理体系

将表数据模型分为三层:操作数据层(ods)、公共维度模型层(cdm)和应用数据层(ads),其中公共维度模型层包括明细数据层(dwd)和汇总数据层(dws)。数据模型的维度设计主要以维度建模理论为基础,基于维度数据模型总线架构,构建一致性的维度和事实。(4)模型设计:模型设计主要包括维度及属性的规范定义,维表、明细事实表和汇总事实表的模型设计。(3)规范定义:规范定义主要定义指标体系,包括原子指标、修饰词、时间周期和派生指标。

m0_48165967的博客 880

Google Earth Engine(GEE)——MOD09A1/MOD11A2/MOD13A1不同的QA波段去云进行分析

​​​​​​​大多数光学卫星图像产品都带有一个或多个 QA 波段,允许用户评估每个像素的质量并提取满足其要求的像素。QA 波段最常见的应用是提取有关多云像素的信息并对其进行屏蔽。但是 QA 波段包含大量其他信息,可以帮助您从分析中删除低质量数据。通常,QA 频带中包含的信息存储为按位标志。在这篇文章中,我将介绍与位运算相关的基本概念,以及如何使用位掩码提取和屏蔽特定的质量指标。

此星光明博客 4575

软考备考:《系统规划与管理师教程》(第2版)第2章——数字ZG与数智化发展

🔴数字化转型的定义:数字化转型是建立在数字化转换、数字化升级基础上,进一步触及组织核心业务,以新建一种业务模式为目标的高层次转型。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 960

阿里大数据之路笔记:数据模型篇2-阿里数据整合及管理体系

本文从架构层面介绍了阿里One Data数据管理体系,包括体系架构、指标体系、分层架构。另外还介绍了模型设计、模型实施的原则及实现思路。

eeeddieee的博客 346

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

干货:解码OneData,阿里的数仓之路。

原文链接:http://click.aliyun.com/m/13928/免费开通大数据服务:https://www.aliyun.com/product/odps据IDC报告,预计到2020年全球数据总量将超过40ZB(相当于4万亿GB),这一数据量是2013年的10倍。正在“爆炸式”增长的数据的潜在巨大价值正在被发掘,它有可能成为商业世界的“新能源”,变革我们的生产,影响...

weixin_33736048的博客 297

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

数据治理-数仓规划

说完两个大的领域之后,维度建模明显会更适合大部分企业,在国内有两个主流的方法论,一个是Kimball的维度建模方法论,一个是基于Kimball发展的阿里OneData方法论。公司产品线众多,数仓建设并不规范,同一条产品线的不同版本就有多种数据库,以及各种建模方法,同时由于多版本的统计口径不一致医院对于产品的数据质量存疑,数据治理被提上日程。可以被当做书就是数据的图书馆管理系统,建模就是数据组织和存储的方法。在第一步中,应该根据公司的业务形态选择是建数据集市还是搭建数仓。

weixin_48648119的博客 575

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

数据仓库-模型

A、实体关系(ER)模型 数据仓库之父Immon的方法从全企业的高度设计一个3NF模型,用实体加关系描述的数据模型描述企业业务架构,在范式理论上符合3NF,它与OLTP系统中的3NF的区别,在于数据仓库中的3NF上站在企业角度面向主题的抽象,而不是针对某个具体业务流程的实体对象关系抽象,它更多的是面向数据的整合和一致性治理,正如Immon所希望达到的:“single version of the...

bin330720911的专栏 2274
上一篇: 【阿里巴巴中台—模型设计】模型分层和原则
下一篇: 【原创】hive/mysq 字典表多字段替换事实表多字段
DM_Source
博客等级 码龄9年 33粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值