1

Redshift にロードしようとしているファイルのセットが S3 にあります。私はそれを行うためにAmazonデータパイプラインを使用しています。ウィザードはクラスター、データベース、およびファイル形式の情報を取得しましたが、テーブルの既存のフィールドを保持するには主キーが必要であるというエラーが表示されます ( KEEP_EXISTING)

私のテーブルスキーマは次のとおりです。

create table public.Bens_Analytics_IP_To_FileName(  
Day date not null encode delta32k,  
IP varchar(30) not null encode text255,  
FileName varchar(300) not null encode text32k,  
Count integer not null)  
distkey(Day)  
sortkey(Day,IP);  

そのため、テーブルに複合主キーを追加して、それが機能するかどうかを確認しましたが、同じエラーが発生します。

create table public.Bens_Analytics_IP_To_FileName(  
Day date not null encode delta32k,  
IP varchar(30) not null encode text255,  
FileName varchar(300) not null encode text32k,  
Count integer not null,  
primary key(Day,IP,FileName))  
distkey(Day)  
sortkey(Day,IP);  

そのため、ID 列を最後の列として追加し、それを主キーにすることにしましたが、COPY 操作では、その ID 列の入力ファイルに値が必要であり、あまり意味がありませんでした。

理想的には、主キーまたは複合主キーなしで機能させたい

何か案は?

ありがとう

4

2 に答える 2

0

ドキュメントは素晴らしい状態ではありません。彼らは、任意のキーにすることができる「mergeKey」の概念を追加しました(お知らせドキュメント)。これでテーブルに主キーを定義する必要はありません。

ただし、入ってくる新しいデータと redshift テーブルの既存のデータの間で結合を実行するには、キーを提供する必要があります。

于 2015-04-01T20:32:04.763 に答える