【问题标题】:Exporting data from PowerPivot从 PowerPivot 导出数据
【发布时间】:2014-08-22 19:35:06
【问题描述】:

我有一个巨大的 PowerPivot 表(839,726 行),它太大了,无法复制粘贴到常规电子表格中。我曾尝试复制它,然后使用data = read.table("clipboard", header = T) 行将其直接读入R,但这些方法都不起作用。我想知道是否有一些插件或方法可以用来将我的 PowerPivot 表导出为 CSV 或 .xlsx?非常感谢

【问题讨论】:

  • 为什么不只是“另存为...”/csv?
  • @BondedDust 因为它不会保存 PowerPivot 数据,而是保存工作表中的数据。我必须先从 PowerPivot 窗口将其保存到工作表中,然后才能将其保存为 csv。
  • 如何复制然后粘贴特殊的“值”到一个新的工作表中,然后将其保存为 csv。
  • 看看这个:powerpivotblog.nl/… 如果你能正常工作,请回帖,因为这可能很重要:-)
  • 让我指出“Excel 电子表格”与“常规电子表格”不同,因此很可能替代应用程序可以处理这种大小的数据库。但是,我很难相信 PowerPivot 的作者没有包含将所需数据写入文本文件的选项。如果确实如此,请为您的原始问题找到一种不同的方法——对于这种大小的 dbase,我首先会推荐这种方法。 MSoft Office 在处理大文件方面真的很糟糕(无论是 excel 还是 word 或其他)。

标签: r excel powerpivot


【解决方案1】:
  • 选择所有 PowerPivot 表
  • 复制数据
  • 将数据粘贴到文本文件中(例如 PPtoR.txt)
  • 使用制表符分隔符读取 R 中的文本文件:read.table("PPtoR.txt", sep="\t"...)

【讨论】:

  • 感谢这个 Riadh...它还可以使用 Alt-E-S 将特殊粘贴为“纯文本”而不​​是尝试粘贴 HTML
  • 像往常一样,在 R 中有几种方法可以执行相同的任务(另存为 *csv、*xlsx... 或直接在 R IDE 中粘贴文本并使用 textConnection{} 读取并读取。桌子{}...)。只需找到最适合您的任务和数据量的方法。
  • 对于大型数据集(超过 10 万行表)有什么建议吗?
【解决方案2】:

要将 PowerPivot 表导入 Excel:

  1. 根据您的 PowerPivot 数据创建数据透视表。
  2. 确保您创建的数据透视表在值区域中有内容,但在过滤器、列或行区域中没有。
  3. 转到数据 > 连接。
  4. 选择您的数据模型并单击属性。
  5. 在“使用”选项卡中,OLAP 钻取将要检索的最大记录数设置为您需要的最高记录数(最大值为 9999999 条记录)。
  6. 双击数据透视表中的度量区域进行钻取。

【讨论】:

    【解决方案3】:

    另一种解决方案是

    • 将 Powerpivot 模型导入 PowerBi 桌面
    • 使用 Powershell 脚本从 PowerBI 桌面导出结果

    这是一个例子

    https://github.com/djouallah/PowerBI_Desktop_Export_CSV

    【讨论】:

      【解决方案4】:

      下面是纯 Excel/VBA 解决方案。这改编自代码 here 以使用 FileSystemObject 并一次将 1k 行写入文件。您需要添加 Microsoft ActiveX 数据对象库和 Microsoft 脚本运行时作为参考。

      Option Explicit
      
      Public FSO As New FileSystemObject
      
      Public Sub ExportToCsv()
      
          Dim wbTarget As Workbook
          Dim ws As Worksheet
          Dim rs As Object
          Dim sQuery As String
      
          'Suppress alerts and screen updates
          With Application
              .ScreenUpdating = False
              .DisplayAlerts = False
          End With
      
          'Bind to active workbook
          Set wbTarget = ActiveWorkbook
      
          Err.Clear
      
          On Error GoTo ErrHandler
      
          'Make sure the model is loaded
          wbTarget.Model.Initialize
      
          'Send query to the model
          sQuery = "EVALUATE <Query>"
          Set rs = CreateObject("ADODB.Recordset")
          rs.Open sQuery, wbTarget.Model.DataModelConnection.ModelConnection.ADOConnection
          Dim CSVData As String
          Call WriteRecordsetToCSV(rs, "<ExportPath>", True)
      
          rs.Close
          Set rs = Nothing
      
      ExitPoint:
          With Application
              .ScreenUpdating = True
              .DisplayAlerts = True
          End With
          Set rs = Nothing
          Exit Sub
      
      ErrHandler:
          MsgBox "An error occured - " & Err.Description, vbOKOnly
          Resume ExitPoint
      End Sub
      
      
      
      Public Sub WriteRecordsetToCSV(rsData As ADODB.Recordset, _
              FileName As String, _
              Optional ShowColumnNames As Boolean = True, _
              Optional NULLStr As String = "")
          'Function returns a string to be saved as .CSV file
          'Option: save column titles
      
          Dim TxtStr As TextStream
          Dim K As Long, CSVData As String
      
          'Open file
          Set TxtStr = FSO.CreateTextFile(FileName, True, True)
      
          If ShowColumnNames Then
              For K = 0 To rsData.Fields.Count - 1
                  CSVData = CSVData & ",""" & rsData.Fields(K).Name & """"
              Next K
      
              CSVData = Mid(CSVData, 2) & vbNewLine
              TxtStr.Write CSVData
          End If
      
          Do While rsData.EOF = False
              CSVData = """" & rsData.GetString(adClipString, 1000, """,""", """" & vbNewLine & """", NULLStr)
              CSVData = Left(CSVData, Len(CSVData) - Iif(rsData.EOF, 3, 2))
              TxtStr.Write CSVData
          Loop
      
          TxtStr.Close
      
      End Sub
      

      【讨论】:

        【解决方案5】:

        这是一个可爱的低技术方式: https://www.sqlbi.com/articles/linkback-tables-in-powerpivot-for-excel-2013/

        我认为 Excel 2016 中的过程略有不同。如果您有 Excel 2016,则只需转到数据选项卡,转到获取外部数据,然后转到现有连接(并在表下查看)。

        另一个重要的事情是点击取消链接(在表格工具 - 设计 - 外部表格数据下)。这会将其与源数据取消链接,因此它实际上只是一个导出。

        您可以根据需要将该数据复制到另一个工作簿中。

        【讨论】:

          【解决方案6】:

          Power Pivot 中的数据经过建模,使用 DAX Studio 将数据导出到 csv 或 SQL。 完成后,您会看到每个模型对应一个 CSV 文件或 SQL 表。

          【讨论】:

            猜你喜欢
            • 2017-12-23
            • 1970-01-01
            • 2023-03-04
            • 1970-01-01
            • 2012-03-08
            • 1970-01-01
            • 1970-01-01
            • 2013-09-24
            • 2016-12-01
            相关资源
            最近更新 更多