Loading Data into your PGD Cluster

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クラスターを管理します。