热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

带有强大查询功能的未透视文件导致具有超过一百万条记录的文件

在取消透视过程完成之前,是否有机会分割文件?我试图做相反的事情,即拆分

在取消透视过程完成之前,是否有机会分割文件?我试图做相反的事情,即拆分文件然后再取消透视它,但是由于我必须处理20多个文件并且我无法编写运行正常的宏,因此这需要太多时间做这份工作。
我必须实现它,因为我必须将文件加载到其中没有不可透视功能的另一个软件中,而且我无法直接访问它们的数据库来运行任何查询。


有一种使用VBA的解决方案。使用这种方法,您需要:


  1. 将Power Query表加载到Power Pivot Workbook数据模型中

  2. 使用VBA从工作簿数据模型中获取数据

  3. 将记录写入CSV文件

下面是逐步操作方法。

为了进行验证,我使用下面的代码在Power Query中创建了一个300万行的虚拟表,将其命名为“ MyData”。

// MyData: A table of 3 million rows
let RowCount = 3000000
in Table.FirstN(
Table.FromColumns({
List.Generate(() => 1,each true,each _ + 1),List.Generate(() => Number.Random() * 1000,each Number.Random() * 1000)
},type table [ID = Int64.Type,RandomNumber = number]),RowCount
)

MyData

通过选择关闭并加载到,然后选择仅创建连接并选中将此数据添加到数据模型中,将该表加载到工作簿数据模型中

然后,使用下面的VBA代码,我能够连接到数据模型,获取记录并将其转储为CSV文件。

Const OutFile As String = "C:/path/to/MyData.csv"
Dim Wb As Workbook
Set Wb = Application.ActiveWorkbook
Wb.Model.Initialize
'Connection to the Data Model
Dim Conn As Object 'ADODB.Connection
Set COnn= Wb.Model.DataModelConnection.ModelConnection.ADOConnection
Dim Recordset As Object 'ADODB.Recordset
Set Recordset = CreateObject("ADODB.Recordset")
Dim Query As String
Query = "EVALUATE MyData" 'DAX query to return the entire table
Recordset.Open Query,Conn
Dim FileNum: FileNum = FreeFile()
Open OutFile For Output As #FileNum
Do While Not Recordset.EOF
Write #FileNum,Recordset("MyData[ID]"),Recordset("MyData[RandomNumber]")
Recordset.MoveNext
Loop
Close #FileNum

推荐阅读
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Givenasinglylinkedlist,returnarandomnode'svaluefromthelinkedlist.Eachnodemusthavethe s ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • STL迭代器的种类及其功能介绍
    本文介绍了标准模板库(STL)定义的五种迭代器的种类和功能。通过图表展示了这几种迭代器之间的关系,并详细描述了各个迭代器的功能和使用方法。其中,输入迭代器用于从容器中读取元素,输出迭代器用于向容器中写入元素,正向迭代器是输入迭代器和输出迭代器的组合。本文的目的是帮助读者更好地理解STL迭代器的使用方法和特点。 ... [详细]
  • 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList优于LinkedList,因为Ar ... [详细]
  • VBA操作Excel之设置单元格属性
    VBA操作Excel简介一、VBA读写Excel文件二、VBA设置单元格属性三、VBA弹出输入和输出窗口参考文档一、VBA读写Excel文件VBA简介及打开Excel文件方法见VB ... [详细]
author-avatar
明卫国
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有