■ はじめに
Local開発環境はPostgreSQLで
本番環境はSnowflakeで
DB(DWH)間には、DBTで吸収しているが
時にそれでも違いでエラーになる場合があったので
原因をメモっておく
目次
【0】データ準備
1)PostgreSQL環境
2)使用データ
【1】WHERE句でエイリアスを使用した場合
【2】SELECT文の最後にカンマを入れた場合
【3】Parquetファイルのロードのサポート状況
【0】データ準備
* PostgreSQL15を想定
https://www.db-fiddle.com/
2)使用データ
PostgreSQL
CREATE TABLE member (
id INT,
name VARCHAR(50),
gender VARCHAR(1),
country_code VARCHAR(3),
class VARCHAR(10),
updated_date DATE
);
INSERT INTO member (id,name,gender,country_code,class,updated_date) VALUES
(1,'Mike','m','USA','bronze','2024-09-14'),
(2,'Tom',NULL,'GBR','gold','2024-09-14'),
(3,'Smith','f',NULL,'silver','2024-09-14'),
(4,'Ken',NULL,'JPN','gold','2024-09-14'),
(5,'Jack','m','UKR','gold','2024-09-14'),
(6,'Henry','m','AUS','bronze','2024-09-14'),
(7,'Sophia','f','JPN','platinum','2024-09-14'),
(8,'George','m','USA',NULL,'2024-09-14'),
(9,'Lily','f','JPN','bronze','2024-09-14'),
(10,'Daisy','f','USA','platinum','2024-09-14')
;
【1】WHERE句でエイリアスを使用した場合
PostgreSQL
SELECT
gender AS g,
class AS c
FROM
member
WHERE
g = 'm'
GROUP BY
g, c
;
【2】SELECT文の最後にカンマを入れた場合
PostgreSQL
SELECT
id,
name,
gender,
country_code,
class,
updated_date,
FROM
member
WHERE
gender = 'm'
;
【3】Parquetファイルのロードのサポート状況
CSV については、Snowflake/PostgreSQLともにサポートしているが
Parquetについては、PostgreSQLはサポートされていない
ちなみに、Redshiftならサポートしている。
詳細は、以下の関連記事を参照のこと
【PostgreSQL】COPY コマンド ~ COPY FROM / TO ~
https://dk521123.hatenablog.com/entry/2020/06/11/112650
Amazon Redshift ~ COPY コマンド ~
https://dk521123.hatenablog.com/entry/2021/07/21/214248
関連記事
Snowflake ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/02/130111
Snowflake ~ 入門編 / Hello world ~
https://dk521123.hatenablog.com/entry/2021/11/22/212520
【PostgreSQL】COPY コマンド ~ COPY FROM / TO ~
https://dk521123.hatenablog.com/entry/2020/06/11/112650
Amazon Redshift ~ COPY コマンド ~
https://dk521123.hatenablog.com/entry/2021/07/21/214248