Skip to content

Commit b4ac161

Browse files
committed
export api for read sas xpt file to R# language
1 parent 1b5a12d commit b4ac161

1 file changed

Lines changed: 15 additions & 2 deletions

File tree

Data/BinaryData/DataStorage/Tabular/FrameReader.vb

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@
5151

5252
#End Region
5353

54+
Imports System.IO
55+
Imports System.Runtime.CompilerServices
5456
Imports System.Text
5557
Imports Microsoft.VisualBasic.Data.Framework
5658
Imports Microsoft.VisualBasic.Data.IO.Xpt
@@ -105,13 +107,24 @@ Public Module FrameReader
105107
''' </summary>
106108
''' <param name="file"></param>
107109
''' <returns></returns>
110+
'''
111+
<MethodImpl(MethodImplOptions.AggressiveInlining)>
108112
Public Function ReadSasXPT(file As String) As DataFrame
109-
Using iterator As New SASXportFileIterator(file)
113+
Return ReadSasXPT(file.Open(FileMode.Open, doClear:=False, [readOnly]:=True), filename:=file)
114+
End Function
115+
116+
''' <summary>
117+
''' read sas xpt file as dataframe
118+
''' </summary>
119+
''' <param name="buffer"></param>
120+
''' <returns></returns>
121+
Public Function ReadSasXPT(buffer As Stream, Optional filename As String = Nothing) As DataFrame
122+
Using iterator As New SASXportFileIterator(buffer)
110123
Dim cols As List(Of Object)() = New List(Of Object)(iterator.MetaData.var_count - 1) {}
111124
Dim row As Object()
112125
Dim tableName = If(
113126
iterator.MetaData.table_name.StringEmpty(, True),
114-
file.BaseName,
127+
filename.BaseName(allowEmpty:=True),
115128
iterator.MetaData.table_name)
116129

117130
For i As Integer = 0 To cols.Length - 1

0 commit comments

Comments
 (0)