Data Prep Spark SQLガイドライン¶
構造化照会言語(SQL)は、リレーショナルデータベースに保存されたデータの管理に設計済みの宣言言語です。Spark SQLは、登録されたデータフレーム(名前のついた列に整理されたデータ)に対して、データベースに照会するために使用されるSQLと同じように、クエリを書くことができるSparkのコンポーネントです。Data PrepはSpark SQLツールで使用するSpark SQL関数のライブラリをサポートしています。
ユースケース¶
このセクションで示すデータセットの例には、ターゲット特徴量Hired
を含むジョブアプリケーションデータのサンプルが含まれています。
クエリーガイドライン¶
Data Prepにデータセットが読み込まれると、DataFrameとして登録され、Spark SQLステートメント内のdataset
エイリアスを使用してクエリーできるようになります。
Spark SQLを使用してデータを形成するには、Spark SQLツールを有効にし、Spark SQLステートメントペインにSQLクエリーを入力します。
Data Prepでは、SELECT
クエリーのみ許可されています。列名を使用してクエリーを構築します。例を以下に示します。
SELECT
EducationLevel,
Hired
FROM dataset
その他の制限については、禁止されているキーワードと関数を参照してください。
サンプルクエリー¶
以下に示すのは、Data Prepで使用されるSpark SQLクエリーとその結果の説明です。
備考
Data Prepでは、SQLステートメントは大文字と小文字を区別し、キーワードには大文字のみ、特徴量名には小文字のみを使用するという共通のSQL規則に従います。
例1
SELECT * FROM dataset
更新されたデータセットには、データセットからのすべての列とすべての行が含まれています。
例2
SELECT * FROM dataset
結果はParseException
となります。
例3
SELECT * from doesNotExist
結果はNoSuchTableException
となります。
例4
SELECT Hired FROM dataset
更新されたデータセットには(アプリケーションが成功したかどうかを含む)Hired
列のみとすべての行が含まれています。
例5
SELECT
EducationLevel,
Hired
FROM dataset
WHERE EducationLevel = 5
更新されたデータセットには、Hired
およびEducationLevel
列と、EducationLevel
が5であるこれらの行だけが含まれています。
例6
SELECT
EducationLevel,
CASE WHEN Hired = 'No' THEN 0 ELSE 1 END
AS HiredNum
FROM dataset
WHERE EducationLevel = 5
更新されたデータセットにはEducationLevel
と、EducationLevel
が5である行のHired
列の数値バージョンが含まれています。
例7
SELECT
EducationLevel,
avg(CASE WHEN Hired = 'No' THEN 0 ELSE 1 END) AS acceptance_rate
FROM dataset
GROUP BY EducationLevel
ORDER BY EducationLevel
更新されたデータセットには、EducationLevel
を基準に、EducationLevel
と、EducationLevel
グループ内の平均受入れ率が含まれています。
例8
SELECT
EducationLevel,
avg(CASE WHEN Hired = 'No' THEN 0 ELSE 1 END) AS acceptance_rate,
std(CASE WHEN Hired = 'No' THEN 0 ELSE 1 END) AS acceptance_rate_std
FROM dataset
GROUP BY EducationLevel
ORDER BY EducationLevel
更新されたデータセットには、EducationLevel
を基準に、EducationLevel
と、EducationLevel
グループ内の受入れ率の平均と標準偏差が含まれています。
例9
SELECT
EducationLevel,
length(Summary) AS length_summary
FROM dataset
ここには、アプリケーションに沿ったEducationLevel
とカバーレターの長さが表示されます。
例10
SELECT
EducationLevel,
avg(length(Summary)) AS avg_length_summary,
std(length(Summary)) AS std_length_summary,
std(CASE WHEN Hired = 'No' THEN 0 ELSE 1 END) AS acceptance_rate_std,
avg(CASE WHEN Hired = 'No' THEN 0 ELSE 1 END) AS acceptance_rate
FROM dataset
GROUP BY EducationLevel
ORDER BY EducationLevel
この例は、更新されたデータセットには、EducationLevel
を基準に、EducationLevel
、EducationLevel
グループ内の受け入れ率の平均と標準偏差、およびサマリー長さの平均と標準偏差が含まれます。
禁止されたキーワードと関数¶
一部のSparkSQL 2.4.0関数には、セキュリティリスクがあります。Data Prepは、潜在的なセキュリティリスクを高くするコマンドとメソッドの使用を禁止しています。
以下のタブをクリックして、禁止されたキーワードと関数のリストを表示します。
ALTER (DATABASE|SCHEMA)
ALTER [TABLE | VIEW]
ALTER VIEW
CREATE (DATABASE|SCHEMA)
CREATE FUNCTION
CREATE TABLE
CREATE VIEW
DROP DATABASE
DROP FUNCTION
DROP [TABLE | VIEW]
MSCK REPAIR TABLE or ALTER TABLE RECOVER PARTITIONS
TRUNCATE TABLE
USE
LOAD DATA
EXPLAIN
ADD FILE
ADD JAR
ANALYZE TABLE
CACHE TABLE
CLEAR CACHE
DESCRIBE DATABASE
DESCRIBE FUNCTION
DESCRIBE TABLE
LIST FILE
LIST JAR
REFRESH
REFRESH TABLE
RESET
SET
SHOW COLUMNS
SHOW CREATE TABLE
SHOW (DATABASES|SCHEMAS)
SHOW FUNCTIONS
SHOW PARTITIONS
SHOW TABLES or SHOW TABLE EXTENDED
SHOW TBLPROPERTIES
UNCACHE TABLE
DESCRIBE
CREATE TEMP VIEW USING
CREATE TABLE
INSERT [INTO | OVERWRITE]
CREATE TABLE
INSERT OVERWRITE DIRECTORY
java_method
reflect
注意事項¶
-
Data Prep Spark SQLツールは、Spark SQL 2.4.0で使用可能なコマンドと関数をサポートしています。
-
SELECT
クエリーのみが許可されています。現在のデータセットを変更する可能性のあるすべてのSQLの操作は、禁止されています(INSERT
、UPDATE
、DELETE
など)。 -
システムに悪影響を与える可能性がある組み込み関数も禁止されています(
reflect
、java_method
など)。禁止されたキーワードと関数を参照してください。 -
各SQLステートメントはSparkセッションの下で実行されるため、SQL実行間にデータが漏洩する可能性があります。
-
データ型の処理の場合:
- 無限大がサポートされており、nullとして処理されます。
- 列にデータ型が混在している場合、変換可能であれば、その値は指定された型に変換されます。変換可能でなければ、nullに設定されます。
- SQL結果をData Prepデータセットに変換すると、SQL列からのすべてのデータ型がData Prepデータ型に変換されます。型がサポートされていない場合、文字列型に変換されます。