数据仓库建模——渐变维度处理(转载)

渐变维度
维度属性会随着时间而发生变化,必须为维度表的每个属性指定处理变化的策略

[@more@]类型一:改写属性值

原属性

产品关键字 产品描述 部门 SKU编号(自然关键字)
12345 IntelliKidz1.0 教育 ABC922-Z

修改:当产品所属部门变化时

产品关键字 产品描述 部门 SKU编号(自然关键字)
12345 IntelliKidz1.0 策略 ABC922-Z

优点:快速、方便,容易实现。
缺点:所有的属性变化历史都会丢失,不能对旧属性的任何历史数据进行维护。
评价:不常用。对起更正作用的属性修改应用很合适。

类型二:添加维度行

原属性

产品关键字 产品描述 部门 SKU编号(自然关键字)
12345 IntelliKidz1.0 教育 ABC922-Z

修改:当产品所属部门变化时

产品关键字 产品描述 部门 SKU编号(自然关键字)
12345 IntelliKidz1.0 教育 ABC922-Z
25984 IntelliKidz1.0 策略 ABC922-Z


优点:可准确跟踪渐变维度属性变化,可自动区分事实表的历史。
缺点:加速了维度表的膨胀。对于超过百万行记录的维度表来说不合适。也不能将新属性值同旧事实历

史联系起来。
评价:常用。需要使用代理关键字。

类型三:添加维度列

原属性

产品关键字 产品描述 部门 SKU编号(自然关键字)
12345 IntelliKidz1.0 教育 ABC922-Z

修改:当产品所属部门变化时

产品关键字 产品描述 部门 前部门 SKU编号(自然关键字)
12345 IntelliKidz1.0 策略 教育 ABC922-Z

优点:可用于任意通过新的或者以前的属性值,了解新的以及历史的实际数据。
缺点:不适合跟踪大量的中间属性值带来的影响。
评价:不常用。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7757832/viewspace-917187/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7757832/viewspace-917187/

使用基于python的neurora进行表征相似性分析(RSA) 发现了一款用于表征分析的Python API,还是挺方便的,这里简单介绍一下进行表征相似性分析的使用方法。 阅读详情

相关推荐

【CODESYS】-软件Bug与处理方法(20240710更)

【CODESYS】-软件Bug与处理方法(不定期更新)

qq_35316470的博客 5185

关于解决缓慢渐变维的3种方式

关于解决缓慢渐变维的3种方式

weixin_44203240的博客 1926

LLM大模型基础知识【一】

大语言模型(LLM):是指在自然语言处理(Natural Language Processing,NLP)领域中的一类大模型,通常用于处理文本数据和理解自然语言。这类大模型的主要特点是它们在大规模语料库上进行了训练,以学习自然语言的各种语法、语义和语境规则。例如:GPT系列(OpenAI)、Bard(Google)、文心一言(百度)。视觉大模型:是指在计算机视觉(Computer Vision,CV)领域中使用的大模型,通常用于图像处理和分析。

lin_xi_xi的博客 2878

数据仓库-缓慢渐变维-拉链表

一、拉链表基础 缓慢渐变维:维度会随着时间发生缓慢的变化。 处理方式: 全量快照 拉链表 全量快照很简单,今天我们来看看拉链表。。。 拉链表是处理缓慢渐变维的一种方式,它区别于正常的表而言,会多两个字段,start_date和end_date,代表这条数据的起始时间和结束时间。 id name sex dept Start_date End_da...

hsl971105的博客 999

麒麟操作系统Kylin如何从 2203 升级到 2403

fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;开始升级流程第一步:升级前准备1. 确认版本为 V10 SP1 22032. 备份全部重要数据3. 确保网络稳定4. 关闭应用第二步:选择升级方式方法一:图形界面升级方法二:命令行升级1. 更新现有系统至最新2. 启动“系统升级”工具3. 检测并开始下载2403。

让编程变的很简单!! 2663

C#上位机与OneNET云平台数据交互实战——基于HTTP与JSON解析

本文详细介绍了使用C#开发上位机软件与OneNET物联网云平台进行数据交互的实战方法。通过构建HTTP请求、解析JSON数据,实现设备数据的实时获取、界面展示与本地存储,为工业监控与数据采集提供了一套完整高效的C#解决方案。

kkk56的博客 219

缓慢渐变维度的处理方式

缓慢渐变维度的处理方式 维度可以根据变化剧烈程度主要分为无变化维度、缓慢变化维度和剧烈变化维度。例如一个人的相关信息,身份证号、姓名和性别等信息数据属于不变的部分,政治面貌和婚姻状态属于缓慢变化部分,而工作经历、工作单位和培训经历等在某种程度上属于急剧变化字段。 对于剧烈变化维度,通常情况下都是一分为二进行处理的,把其中不常变动的部分单独抽出来作为一个维表,按照缓慢变化维方式进行处理;另外一部

无风听海 2275

运算放大器多谐振荡器设计实战:从施密特触发器到波形生成

本文详细介绍了运算放大器在多谐振荡器设计中的实战应用,涵盖施密特触发器的迟滞比较原理、非稳态振荡器的自激机制以及单稳态和双稳态电路的设计技巧。通过具体案例和参数计算,帮助工程师掌握波形生成与信号处理的核心技术,提升电路设计效率与稳定性。

pz89012345的博客 217

渐变维度(Slowly Changing Dimension)及其处理方法

渐变维度(Slowly Changing Dimension)及其处理方法

lpxuan151009的专栏 4627

2017年电赛题目-自适应滤波器

电赛题目解析之自适应滤波器 首先来看看题目: 2017全国大学生电子设计竞赛题目 这道题有很多发挥空间,本文将介绍三种电路: 数字电位器移相模拟电路 压控移相模拟电路 数字方法 一、数字电位器移相模拟电路 对于前级的加法器比较简单,这里贴出一种使用OPA209实现的常规做法: 输入端分别输入A信号和B信号就可以实现A+B,因为信号频率很低不涉及到阻抗匹配问题,所以这种接法没............

电气小能手的博客 2万+

gmsv源代码c语言,石器时代ABLua的原理、简介、过程、运用、收发

操作原理(一)服务端:服务器源文件客户端:客户所操作的程序(既是游戏客户端)接口:既是某项功能(例如:鼠标点击,文字发送,战斗,观战,人物动作等)返回的值ABlua:在源代码中添加的整套引擎作为回调接口--lua所实现的功能是基于服务端源码添加的接口由该接口与客户端发送封包实现功能源码里是否有ABlua回调接口?例如:源码里的gmsv/battle.c文件(既是战斗回调文件)以下为简单描述C给予l...

weixin_35223575的博客 2408

数据仓库系列 - 缓慢渐变维度 (Slowly Changing Dimension) 常见的三种类型及原型设计...

开篇介绍 在从OLTP业务数据库向DW数据仓库抽取数据的过程中,特别是第一次导入之后的每一次增量抽取往往会遇到这样的问题:业务数据库中的一些数据发生了更改,到底要不要将这些变化也反映到数据仓库中?在数据仓库中,哪些数据应该随之变化,哪些可以不用变化?考虑到这些变化,在数据仓库中的维度表又应该如何设计以满足这些需要。 很显然在业务数据库中数据的变化是非常自然和正常的,比如顾客的联系方式,...

weixin_30363509的博客 167

自考计算机系统原理(第六章计算机系统概论)-13015

名词解释 I/O 硬件 I/O软件 用户空间I/O软件 内核空间I/O 软件 系统调用处理程序 系统调用服务例程 设备驱动程序 中断服务程序 系统级1/O函数 虚拟文件系统 文件描述符 文件元数据 流缓冲区 索引节点 目录文件 目录项 系统打开文件表 磁盘高速缓存 高速缓存 RAM I / O 控制方式 程序直接控制I/O 就绪状态 中断控制I/O 中断屏蔽字 多重中断 中断嵌套 DMA 方式 DMA 控制器 设备控制器 I/O端口 控制端口 数据端口 状态端口 I/O 地址空间 独立编址方式 统一编址方

qq_23872947的博客 1150

数据仓库几种模型详解

数据仓库几种模型详解

weixin_44562654的博客 4482

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

渐变维度入门.

有一张内容提供商表. 如图, 需要做维度渐变. 渐变列这里做了简化, 只有Cpname. 维度表如下 多了三列, 维度开始时间, 结束时间, 以及是否是当前值. 渐变的设置如下. 1.. 2.. 在这里我们强调一下图2的几列意思. 固定的属性, 用的比较少, 不做解释. 变化的属性就是, 假设有某行记录该列发生了改变, 那么就执行一条sql语句 update ta...

weixin_30730053的博客 182

深度学习工具包 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")

缓慢渐变维度的处理方式

维度可以根据变化剧烈程度主要分为无变化维度、缓慢变化维度和剧烈变化维度。例如一个人的相关信息,身份证号、姓名和性别等信息数据属于不变的部分,政治面貌和婚姻状态属于缓慢变化部分,而工作经历、工作单位和培训经历等在某种程度上属于急剧变化字段。 对于剧烈变化维度,通常情况下都是一分为二进行处理的,把其中不常变动的部分单独抽出来作为一个维表,按照缓慢变化维方式进行处理;另外一部分也单独抽取出来,通常作为...

weixin_34419326的博客 110

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

《分析服务从入门到精通读书笔记》第一章、代理键和渐变维度(5)

使用整数键值代表维度成员的一个原因是减少事实表的大小。同样,整数键允许将看似重复的成员存储在同一个维度表中。例如,在“顾客”维度中,可以有两个都叫Tom的顾客,但每个人都分配了唯一的“顾客”键,保证了维度表中成员键只出现一次。 当然,由于数据仓库是通过提取业务系统的中数据产生的,上述两个Tom毫无疑问已经有了唯一的键值。其中一个可能是C12323A,另一个可能是F23454B。这些键称作为程序键...

weixin_30394333的博客 75

星型模型与雪花模型的区别、分别有哪些优缺点【转载】以及什么时候使用雪花模型

原文链接:https://blog.youkuaiyun.com/winterPassing/article/details/105929303 概念 根据事实表和维度表的关系,可将常见的模型分为星型模型和雪花模型。在数据仓库的建设中,一般都会围绕着这两种模型来设计表关系或者结构。那么什么是事实表和维度表呢?在维度建模中,将度量称为“事实” ,将环境描述为“维度”。维度是用于分析事实所需要的多样环境。例如,在分析交易过程时,可以通过买家、卖家、商品和时间等维度描述交易发生的环境。事实则紧紧围绕着业务过程来设计,通过.

Mr.pan felix的专栏 4552

超级维度表处理(亿行数据级别)

最近在优化公司的数据仓库项目中ETL部分,发现有一处明显可以改进的地方,发出来和大家分享一下。 在数据仓库中一个一个超级大维度表(1亿左右的记录),更新这个维度表的时候,采取的策略是最简单的1类渐变维度,即存在则更新,不存在则插入。 原先的方式是在ETL过程中先查找这个大表本身,如果存在就打上update标记,不存在就打上insert标记,最后通过分支来分别插入和更新数据记录。每次...

weixin_30915951的博客 182

数据仓库系列之ETL过程和ETL工具

上周因为在处理很多数据源集成的事情一直没有更新系列文章,在这周后开始规律更新。在维度建模中我们已经了解数据仓库中的维度建模方法以及基本要素,在这篇文章中我们将学习了解数据仓库的ETL过程以及实用的ETL工具。 一、什么是ETL? 构建数据仓库的核心是建模,在数据仓库的构建中,ETL贯穿于项目始终,它是整个数据仓库的生命线。从数据源中抽取数据,然后对...

weixin_30552635的博客 165

【数据仓库】——星型模型和雪花模型

一、概述   在多维分析的商业智能解决方案中,根据事实表和维度表的关系,又可将常见的模型分为星型模型和雪花型模型。在设计逻辑型数据的模型的时候,就应考虑数据是按照星型模型还是雪花型模型进行组织。   当所有维表都直接连接到“事实表”上时,整个图解就像星星一样,故将该模型称为星型模型,         星型架构是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相连接,不存在渐变维...

weixin_30809173的博客 292

SSIS典型应用场景分析

SSIS典型应用场景分析 SSIS 提供一系列支持业务应用程序开发的内置任务、容器、转换和数据适配器,方便我们创建解决方案来解决复杂的业务问题,除了可以管理 SQL Server 数据库以及在 SQL Server 实例之间复制 SQL Server 对象,我们还可以对Oracle、MySql、Excel等不同的异构数据源进行抽取和加载。下面我们将简单的说明一下其典型的应用场景。 合并来...

weixin_30329623的博客 111

第三篇:多维模型缓慢变化维技术

第三篇:多维模型缓慢变化维技术 维度表的分类 类型0:原样保留 对于类型0来说,维度值不会发生变化。该类型适用于 日期维度的大多数属性。 类型1:重写 对于类型1来说,需要全量更新整个维度表,因此此种类型破坏了历史情况。无法对于历史情况进行跟踪。如City信息       例如:某个城市进行了更新,类型0会把最新的数据更新到DW库里去...

weixin_30361641的博客 274

数仓 星形模型与雪花模型 简单理解

星形模型 雪花模型 星型模型是所有维度表都是连接在一个事实表上面,雪花模型是将维度表拆分地更加详细,是多层次的。 在星型模型的维度表里面,一张维度表储存了众多存在冗余的信息,为什么冗余,在哪里冗余,我想了一个简单的例子。 如 地域维表 国家a GDP 国家b GDP 国家a 省份a GDP 国家a 省份b GDP 国家a...

weixin_30642029的博客 226

我的毕业论文--第二类缓慢变化维

摘要 随着计算机的发展,信息系统中数据孤岛的增多,如何把这些数据利用起来,是每个企业所面临的问题。ETL是指数据抽取(Extract)、数据转换(Transform )以及数据加载(Loading),在数据仓库的应用中起着关键作用。ETL把这些数据孤岛利用起来,形成数据仓库, 是构建数据仓库中极其重要的一环。缓慢变化维是指ETL中对数据仓库维度表的更新的技术。研究数据仓库的维度更新...

aisui8850的博客 146

Data Flow ->> Slow Changing Dimension

这里简单讲下SCD 在讲之前贴上两个有用的链接地址。作者的两篇文件讲解了SCD是什么以及应用 http://www.cnblogs.com/biwork/p/3363749.html http://www.cnblogs.com/biwork/p/3371338.html Slow Changing Dimension翻译过来就叫缓慢渐变维度。它被应用于数据仓库中对维度表数...

weixin_30654419的博客 181
上一篇: ADO与ADO.NET既有相似也有区别(转自csdn)
下一篇: SQL SERVER 2005 SSIS变量的灵活运用(首发于it168)
cpp872623
博客等级 码龄12年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值