从PowerPivot导出数据

3

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


1
为什么不直接使用“另存为...”/ csv? - IRTFM
@BondedDust 因为这样它不会保存 PowerPivot 数据,而是保存工作表中的数据。我必须先将其从 PowerPivot 窗口获取到工作表中,然后才能将其保存为 csv。 - Moderat
复制然后使用“值”粘贴特殊内容到新工作表中,然后将其保存为CSV格式,这个方案怎么样? - IRTFM
1
看一下这个链接:http://www.powerpivotblog.nl/dump-the-results-of-a-dax-query-to-csv-using-powershell/ 如果你成功了,请回帖,因为这可能是一个重大的进展 :-) - Jacob
让我指出,“Excel电子表格”并不等同于“常规电子表格”,因此可能会有其他应用程序可以处理这么大的数据库。然而,我很难相信PowerPivot的作者们没有包括将所需数据写入文本文件的选项。如果真是这样,那就找到一个不同的方法来解决你最初的问题——对于这么大的数据库,我本来会建议你采取不同的方法。微软办公套件在处理大文件方面确实很糟糕(无论是Excel还是Word或其他任何东西)。 - Carl Witthoft
6个回答

3
  • 选择所有PowerPivot表格
  • 复制数据
  • 将数据粘贴到文本文件中(例如PPtoR.txt)
  • 使用制表符分隔符在R中读取文本文件:read.table("PPtoR.txt", sep="\t"...)

谢谢你的建议,Riadh。使用Alt-E-S进行特殊粘贴并选择“纯文本”也可以实现粘贴HTML的效果。 - Moderat
通常在R中完成相同任务有几种方法(如保存为csv、xlsx...或直接将文本粘贴到R IDE中,并使用textConnection{}和read.table{}进行读取...)。只需找到最适合您的任务和数据量的方式即可。 - Riadh
有关处理大型数据集(10+百万行表)的任何技巧吗? - Petr Havlik

0

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

我认为在Excel 2016中,这个过程有点不同。如果你有Excel 2016,你只需要进入数据选项卡,然后选择获取外部数据,再选择现有连接(并查看表格)。

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

如果您希望,可以将该数据复制到另一个工作簿中。


0

0

将PowerPivot表格导入Excel:

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

0
以下是一个纯Excel / VBA解决方案。这是从这里的代码改编而来,使用FileSystemObject并将1k行一次写入文件。您需要添加Microsoft ActiveX Data Objects Library和Microsoft Scripting Runtime作为引用。
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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接