Loading Data into your PGD Cluster#
PGDは、その中核がPostgresデータベースであるため、PostgreSQLデータベースを使用するのと同じツールと方法を使用して、PGDクラスターにデータをロードできます。まず、このガイドでは、PGDクラスターにデータをロードするプロセスを説明します。
オンラインCSVインポート#
最初に、オンラインCSVファイルからPGDクラスターにデータをインポートする方法を示します。この場合、それは
Baseball Databank からの履歴野球データです。 psqlの\COPY
コマンドを使用して、URLから直接インポートします。 \COPY
がしないことの1つはテーブルを作成することです。したがって、最初にテーブルを作成する必要があります。
psql
を使用してPGDクラスターに接続します。docker compose exec host-1 psql
を使用するか、 psql
がローカルにインストールされている場合は、それを使用してホストマシンのポート6432に接続します。
CREATE TABLE batters (
id SERIAL,
playerid VARCHAR(9),
yearid INTEGER,
stint INTEGER,
teamid VARCHAR(3),
lgid VARCHAR(2),
g INTEGER,
ab INTEGER,
r INTEGER,
h INTEGER,
"2b" INTEGER,
"3b" INTEGER,
hr INTEGER,
rbi INTEGER,
sb INTEGER,
cs INTEGER,
bb INTEGER,
so INTEGER,
ibb INTEGER,
hbp INTEGER,
sh INTEGER,
sf INTEGER,
gidp INTEGER,
PRIMARY KEY (id)
);
これで、 \COPY コマンドを使用してCSVデータをbatters
テーブルにインポートできます。
\COPY batters(playerid,yearid,stint,teamid,lgid,g,ab,r,h,"2b","3b",hr,rbi,sb,cs,bb,so,ibb,hbp,sh,sf,gidp) FROM PROGRAM curl "https://raw.githubusercontent.com/cbwinslow/baseballdatabank/master/core/Batting.csv" DELIMITER , CSV HEADER
このコマンドは、 curl を使用してURLからCSVファイルを取得し、
\COPY コマンドに直接パイプします。このコマンドは、 batters
テーブルにデータをインポートします。
rotations(…)エントリーは、CSVデータを行のどのフィールドに移動するかを定義します。
DELIMITER ',' CSV HEADER
オプションは、ファイルがスキップされるヘッダー行を含むCSVであることを指定します。
コマンドをコピーして、psql
セッションに貼り付けます。すべてが正しく設定されている場合、データがエラーなしでインポートされるのが表示されるはずです。次のような、コピーされた行数を示す出力が表示されます。
COPY 110495
データが正しくロードされたことを確認するために、単純なクエリーを実行できます。
SELECT COUNT(*) FROM batters;
次のような結果が表示されるはずです。
count
- ------
110495
(1 row)
これは、110,495行がbatters
テーブルに正常にインポートされたことを確認します。
すぐにそれを使用して、1998年のホームランリーダーが誰であったかを考えてみましょう
SELECT playerid, yearid, teamid, hr
FROM batters
WHERE yearid = 1998
ORDER BY hr DESC
LIMIT 1;
次のような出力が表示されるはずです。
playerid | yearid | teamid | hr
- ----------+--------+--------+----
mcgwima01 | 1998 | SLN | 70
(1 row)
そして、それを1998年の最高ランクのホームラン打者トップ5のコンテキストに置きたい場合は、次のことができます。
SELECT playerid, yearid, teamid,
rank() OVER (PARTITION BY yearid ORDER BY hr desc) hr_rank,
hr
FROM batters
WHERE yearid = 1998
ORDER BY hr_rank LIMIT 5;
次のような出力が表示されるはずです。
playerid | yearid | teamid | hr_rank | hr
- ----------+--------+--------+---------+----
mcgwima01 | 1998 | SLN | 1 | 70
sosasa01 | 1998 | CHN | 2 | 66
griffke02 | 1998 | SEA | 3 | 56
vaughgr01 | 1998 | SDN | 4 | 50
belleal01 | 1998 | CHA | 5 | 49
(5 rows)
PGDを使用すると、ウィンドウファンクションのような高度なSQL機能を含むPostgreSQLのフルパワーを活用してデータを分析できますが、ノードがオフラインになった場合でもマルチプルのノードにわたって完全にレプリケートされ、可用性が高いという追加の利点があります。
次のステップ#
いくつかのデータをPGDクラスターにロードしたので、次のトピックを探索できます。
Using PGD CLI コマンドラインからPGDクラスターを管理します。