Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@ogamiki

Oracle R Enterprise経由で主キーになる列がないcsvファイルをデータベースにロードする方法

More than 3 years have passed since last update.

IDのないデータフレームをOREでロードする

Rで使うデータフレームもベクトルの組のため、順列を明確に持ったものです。ただデータベースの表は集合のため、順列に通常意味をなしません。
Oracle R Enterpriseでは、データベースのテーブルをdata.frameライクのore.frameとして扱います。その際に、ore.frameで出力される値が不確定の場合には、デフォルトではエラーが出ます。また、このエラーが出る状態では、predict関数などをore.frameの状態では使えないなど、インデータベースのよさが消えてしまいます。

エラーを出さないようにするには、ore.frameのデータが前列に対してソートされていること、主キーが定義されていること、一意のrow.namesを持つことの条件のいずれかを満たす必要性があります。

主キーがある場合には特に問題になりませんが、主キーとなるようなデータがロード元のCSVファイルなどにない場合に、その後主キーを決めずにore.frame順序問題を回避するtipsを下記に記します。

2008.csvというcsvファイルをRで読込みore.createを使用してAIR2008というテーブルを作成します。

OracleREnterprise1.5
df <- read.table("2008.csv",header=T,sep=",")
ore.create(cbind(ID = 1:nrow(df),df),table ="AIR2008")

ポイントとしては、ore.createする際に、cbind(ID=1:nrow(df),df)とすることによって、dfに1から順に始める連番を付けることができ、それをIDとしてAIR2008テーブル作成の段階で元のCSVファイルに対して追加しています。このままでは、まだエラーが出続けるので、OREと同期後、row.namesにID列を登録します。一意の列があるデータフレームのロードの場合には、その列名をrow.namesに登録しても大丈夫です。

OracleREnterprise1.5
ore.sync()
ore.attach()
row.names(AIR2008) <- AIR2008$ID
head(AIR2008)

以上がID列がないCSVファイルをORE経由でデータベースにロードする方法です。
ただし、あくまでのOREオブジェクトとして、row.namesが保存されているため、ore.saveで保存しないとセッションが切れるたびにrow.namesはnullになってしまうことに注意が必要です。

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ogamiki
DataRobot, Inc.においてデータサイエンティストをしています。以前はフィールドサポートエンジニアをしています。実際にデータ分析を行う方とのディスカッションから、マシンサポートと何でも屋状態です。 過去経歴 日本オラクルのクラウドアーキテクト。PaaS(機械学習、ビッグデータ)を中心に担当しています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?