2017-05-19 13 views
0

SQL ServerのデータテーブルをR Serverにインポートしようとしています。 SQL Serverのデータテーブルにはdatetime形式のdatetimeがありますが、次のコードを使用すると、テーブルは適切な形式でRには入りません。Rサーバー/ SQL Serverのデータインポート - 日付を適切な形式でインポートする方法

`xxx<- RxSqlServerData(table = "vwTCMSDataGPC", 
            connectionString = connStr, 
            colClasses = col)` 

rxGetVarInfo(xxx)を使用して、テーブルがdatetimeファイルを文字クラスとしてインポートすることを確認できます。これは、私は、これは30〜40分かかるため、私のデータのサイズに

xxx<- rxDataStep(inData = xxx, 
        transforms = list(BeginTime = as.POSIXct(BeginTime), 
             RestoreTime = as.POSIXct(RestoreTime), 
             ERTGeneratedTime = as.POSIXct(ERTGeneratedTime)), 
        maxRowsByCols = 1000000000) 

適切な形式で私の日付を取得するには、このコードを実行しなければならないことを意味します。私の仕事の10%がこれを実行しなければならなくなるたびに消えてしまいました。私はBeginTime = "POSIXct"などをcolという名前のオブジェクトに入れてもいいですが、それはうまくいかず、私のやり方でPOSIXctへの変換を提案するエラーが出ます。

rxGetVarInfoを実行すると、私の日の10%をファイルの書式設定に費やさなくても、SQL Serverデータをオブジェクトとして適切な形式でインポートできます。また、これは、このソリューションが生産に入るときに重要です。この退屈なステップを行う時間はありません。

この作品をどのように機能させたいのですか?

答えて

0

ODBCは、この時点で日時変換をサポートしていません。ここで

いくつかのソリューションです。この例ではhttps://docs.microsoft.com/en-us/sql/advanced-analytics/tutorials/rtsql-r-and-sql-data-types-and-data-objects#cast-or-convert-sql-server-data

  • を示すようDatatimeは、T-SQLで正しくPOSIXに変換することができ

    1. ポストの著者が遭遇遅い処理時間があるためであると考えられます次の例に示すように、as.POSIXct()の非効率性の中で、手作業の前にdatetime形式を指定するか、またはlubridateパッケージを使用すると、効率が大幅に向上します。

    DF = rxImportが

    行を読む(DT、=リスト(DT2 = as.POSIXct(DT1))に変換):1000000、総行が処理:1000000、総チャンク時間: 34.223秒

    DF = rxImport(DT、変換=リスト(DT2 = as.POSIXct(DT1、形式= "%Y-%M-%D%H:%のM:%S")))

    行が読み:1000000を、合計行が処理:1000000、総チャンク時間:18.733秒

    DF = rxImport(DT、変換=リスト(DT2 = lubridate :: ydm_hms(DT1)))

    行の読み取り:1000000、処理された行の合計:1000000、合計チャンク時間:3.319秒

  • 関連する問題