テーブル・ファンクション演算子リファレンス

テーブル・ファンクション演算子は、データ・フローで使用して表の形式でデータを返すことができる組込みテーブル・ファンクションのリストを提供します。

「テーブル・ファンクション演算子」を参照してください。

テーブル・ファンクション演算子でサポートされている組込みテーブル・ファンクションのリストを次に示します。

キャッシュ

指定されたメモリー・ストレージlevelに従ってデータセットを保持およびキャッシュします。

キャッシュされた自己回復分散データセット(RDD)に新しいデータセットを返します。

パラメータ 説明
level

使用するメモリー・ストレージ:

MEMORY_ONLY: デシリアライズされたJavaオブジェクトとしてJVMに格納します。メモリーが不足している場合、一部のRDDパーティションはキャッシュされませんが、必要に応じて再計算されます。

MEMORY_AND_DISK: デシリアライズされたJavaオブジェクトとしてJVMに格納します。メモリー不足の場合、一部のRDDパーティションはディスクに格納され、必要に応じてディスクから読み取られます。

MEMORY_ONLY_SER: デシリアライズされたJavaオブジェクトとして格納します。

MEMORY_AND_DISK_SER: デシリアライズされたJavaオブジェクトとして格納します。収まらないパーティションはディスクに格納されます。

DISK_ONLY: RDDパーティションはディスクにのみ格納します。

MEMORY_ONLY_2, MEMORY_AND_DISK_2, etc: 他のレベルと同様ですが、各パーティションは2つのクラスタ・ノードでレプリケートされます。

クロス集計分析

指定された2列の個別値から、ペア単位の頻度表または偶発表を計算します。

各列の個別値の数は、1e4より小さくする必要があります。

偶発表を含むデータフレームを返します。偶発テーブル:

  • 最初の列の名前はcol1_col2で、col1は最初の列、col2は変換前の2番目の列です。各行の最初の列は、col1の個別値です。
  • その他の列名は、col2の個別値です。
  • カウントはlongタイプとして返されます。
  • 発生なしのペアは、カウントとしてゼロになります。
  • ゼロ以外のペアの最大数は1e6です。
  • NULL要素はnullに置き換えられます。
パラメータ 説明
col1

最初の列の名前。制限事項については、この表の後のノートを参照してください。

col1の個別アイテムは、返されるデータフレームの各行の最初のアイテムを作成します。

col2

2番目の列の名前。制限事項については、この表の後のノートを参照してください。

co2の個別アイテムは、返されるデータフレームの列名を作成します。

ノート

列名で使用できるのは次の文字のみです:

  • 大文字と小文字 a-z A-Z
  • 数値 0-9
  • アンダースコア _

col1ageで、col2salaryであるとします。

変換前:

+---+------+
|age|salary|
+---+------+
|1  |100   |
|1  |200   |
|2  |100   |
|2  |100   |
|2  |300   |
|3  |200   |
|3  |300   |
+---+------+

変換後:

+----------+---+---+---+
|age_salary|100|200|300|
+----------+---+---+---+
|2         |2  |0  |1  |
|1         |1  |1  |0  |
|3         |0  |1  |1  |
+----------+---+---+---+
キューブ

指定された列リストおよび指定された集計関数式の計算を使用して、可能なすべての組合せの多次元キューブを生成します。

式では、次の集計関数がサポートされています。

  • AVG
  • COUNT
  • MEAN
  • MAX
  • MIN
  • SUM

キューブ変換後にデータフレームを返します。

パラメータ 説明
cubeColumns

マルチディメンション・キューブを生成するための列のリストをカンマで区切ります。

aggExpressions

列に対して実行する集計関数式。

たとえば: salary -> avg, age -> max

変換前:

+----------+-----+-------+------+---+
|department|group|region |salary|age|
+----------+-----+-------+------+---+
|Eng       |A    |local  |1000  |10 |
|Art       |B    |foreign|2000  |11 |
|Sport     |C    |local  |1500  |13 |
|Eng       |A    |foreign|800   |19 |
|Art       |A    |foreign|3000  |30 |
|Eng       |E    |foreign|1000  |21 |
|Art       |D    |local  |1000  |32 |
|Sport     |C    |local  |1000  |28 |
+----------+-----+-------+------+---+

cubeColumnsdepartment, regionで、aggExpressionssalary -> avg, age -> max (平均給与および最大年齢を計算)の場合、変換後のキューブは次のようになります。

+----------+-------+-----------------+--------+
|department|region |avg(salary)      |max(age)|
+----------+-------+-----------------+--------+
|Eng       |foreign|900.0            |21      |
|Sport     |null   |1250.0           |28      |
|Art       |null   |2000.0           |32      |
|Eng       |null   |933.3333333333334|21      |
|null      |local  |1125.0           |32      |
|Art       |foreign|2500.0           |30      |
|null      |foreign|1700.0           |30      |
|Eng       |local  |1000.0           |10      |
|null      |null   |1412.5           |32      |
|Sport     |local  |1250.0           |28      |
|Art       |local  |1000.0           |32      |
+----------+-------+-----------------+--------+
データ生成

指定されたファイル形式およびコンテンツを使用して合成データを生成します。サポートされているファイル形式は次のとおりです。

  • CSV
  • JSON

データ・エンティティを返します。合成データ・ソースは、実データが使用または移動されないパイプライン・ユニット・テストで使用できます。

パラメータ 説明
format

ファイルのタイプ。サポートされている値:

  • CSV
  • JSON
content

指定されたフォーマットのファイル・コンテンツ。

CSVコンテンツの例:

co1,co2,co3
1,B,3
A,2,C

データ生成結果:

+---+---+---+
|co1|co2|co3|
+---+---+---+
|1  |B  |3  |
+---+---+---+
|A  |2  |C  |
+---+---+---+
重複除外

指定された1つ以上の列リストで重複を検索し、重複行が削除された新しいデータセットを返します。

パラメータ 説明
columns

列名または列名のカンマ区切りリスト。

変換前:

+---+---+
|a  |b  |
+---+---+
|1  |2  |
|3  |4  |
|1  |3  |
|2  |4  |
+---+---+

columnsaの場合、変換後のデータセットは次のようになります。

+---+---+
|a  |b  |
+---+---+
|1  |2  |
|3  |4  |
|2  |4  |
+---+---+
よくある項目

指定された最小頻度を使用して、指定された列または列リスト内の頻度の高い項目を検索します。

Karl et al.によって提案された頻繁な要素数アルゴリズムは、頻繁な項目を見つけるために使用されます。偽陽性はありえます。

各列の頻度の高い項目の配列を持つデータフレームを返します。

パラメータ 説明
freqItems

頻繁な項目を検索する列名または列名のカンマ区切りリスト。

support

アイテムが頻繁に考慮される最小頻度。

値は、1e-4 (0.0001の10進値)より大きくする必要があります。

たとえば、0.6は60%を表します。つまり、行の少なくとも60%に表示される項目は頻繁な項目です。

変換前:

+-------+--------------+
|user_id|favorite_fruit|
+-------+--------------+
|      1|         apple|
|      2|        banana|
|      3|         apple|
|      4|        orange|
|      5|        banana|
|      6|        banana|
|      7|         apple|
+-------+--------------+

freqItemsfavorite_fruitで、support0.6の場合、変換後に返されるデータフレームは次のとおりです。

+------------------------+
|favorite_fruit_freqItems|
+------------------------+
|                [banana]|
+------------------------+
Naドロップ

指定された列リストにNULL値またはNaN値を含む行を削除します。

行を除外するデータフレームを返します。

パラメータ 説明
how

行を削除するかどうかを決定する方法。サポートされている値:

  • any: 指定したcolsにNULL値またはNaN値を含む行を削除します。
  • all: 指定したすべてのcolsがNULLまたはNaNである場合にのみ、行を削除します。

minNonNullsパラメータが指定されている場合、howパラメータは無視されます。

cols

列名または列名のカンマ区切りリスト。

minNonNulls

行に含めることができる、nullおよびNaN以外の値の最小数。

指定した最小値より小さい行を削除します。

minNonNullsパラメータによりhowパラメータが上書きされます。

変換前:

+----+-------+----+
|id  |name   |age |
+----+-------+----+
|1   |Alice  |25  |
|2   |null   |28  |
|null|Bob    |null|
|4   |Charlie|30  |
+----+-------+----+

howanyで、colsnameの場合、変換後に返されるデータフレームは次のとおりです。

+----+-------+----+
|id  |name   |age |
+----+-------+----+
|1   |Alice  |25  |
|null|Bob    |null|
|4   |Charlie|30  |
+----+-------+----+

howパラメータを値allとともに使用すると、すべての値がNULLの場合にのみ行が削除されます。たとえば、変換前:

+----+--------+----+
|  id|    name| age|
+----+--------+----+
|   1|John Doe|  30|
|   2|    null|null|
|   3|Jane Doe|  25|
|   4|Jake Doe|null|
|null|    null|null|
+----+--------+----+

変換後:

+---+--------+----+
| id|    name| age|
+---+--------+----+
|  1|John Doe|  30|
|  2|    null|null|
|  3|Jane Doe|  25|
|  4|Jake Doe|null|
+---+--------+----+
Na Fill

NULL値を置換し、置換された値を使用してデータフレームを返します。

パラメータ 説明
replacement

NULL値の置換に使用するキー/値マップ。キーは列名です。値は置換値です。

置換値を指します。たとえば、name -> Tomは、name列のNULL値をTomに置き換えることを意味します。

置換値は列のデータ型にキャストされます。置換値は、次のタイプである必要があります。

  • Int
  • Long
  • Float
  • Double
  • 文字列
  • Boolean

変換前:

+----+-------+----+
|id  |name   |age |
+----+-------+----+
|1   |Alice  |25  |
|2   |null   |28  |
|null|Bob    |null|
|4   |Charlie|30  |
+----+-------+----+

キー/値マップは次のようになります。

id -> 3

name -> unknown

age -> 10

変換後:

+---+-------+---+
|id |name   |age|
+---+-------+---+
|1  |Alice  |25 |
|2  |unknown|28 |
|3  |Bob    |10 |
|4  |Charlie|30 |
+---+-------+---+
Na置換

指定されたキーおよび置換値マップのキーを照合して、指定された列内の別の値で値を置換します。

置換された変換を含む新しいデータフレームを返します。

パラメータ 説明
cols

置換値を適用する列名または列名のカンマ区切りリスト。

cols*の場合、置換はすべての文字列、数値またはブール列に適用されます。

replacement

使用する置換キー/値マップ。キーは置換する値です。値は置換値です。マップ値にはNULLを指定できます。

置換値を指します。たとえば、Alice -> Tomは、AliceTomに置き換えることを意味します。

キーと置換値のペアは同じタイプである必要があります。次のタイプのみがサポートされます。

  • Boolean
  • Double
  • 文字列

変換前:

+----+-------+----+
|id  |name   |age |
+----+-------+----+
|1   |Alice  |25  |
|2   |null   |28  |
|null|Bob    |null|
|4   |Charlie|30  |
+----+-------+----+

colsnameで、replacementAlice -> Tomの場合、変換後のデータフレームは次のようになります。

+----+-------+----+
|id  |name   |age |
+----+-------+----+
|1   |Tom    |25  |
|2   |null   |28  |
|null|Bob    |null|
|4   |Charlie|30  |
+----+-------+----+
再パーティション化

指定された列でデータセットを指定された数のパーティションに分割します。

ハッシュ・パーティション化された新しいデータセットを返します。指定されたパーティションの正確な数が返されます。

パラメータ 説明
partitionColumns

データセットがパーティション化される列名の列名またはカンマ区切りリスト。

numberOfPartitions

作成するパーティションの数。

ロールアップ

指定された列リストおよび指定された集計関数式の計算を使用して、可能な組合せの多次元ロールアップを生成します。

式では、次の集計関数がサポートされています。

  • AVG
  • COUNT
  • MEAN
  • MAX
  • MIN
  • SUM

ロールアップ変換後にデータフレームを返します。

パラメータ 説明
rollupColumns

マルチディメンション・ロールアップを生成するための列のリスト(カンマ区切り)。

aggExpressions

列に対して実行する集計関数式。

たとえば: salary -> avg, age -> max

変換前:

+----------+-----+-------+------+---+
|department|group|region |salary|age|
+----------+-----+-------+------+---+
|Eng       |A    |local  |1000  |10 |
|Art       |B    |foreign|2000  |11 |
|Sport     |C    |local  |1500  |13 |
|Eng       |A    |foreign|800   |19 |
|Art       |A    |foreign|3000  |30 |
|Eng       |E    |foreign|1000  |21 |
|Art       |D    |local  |1000  |32 |
|Sport     |C    |local  |1000  |28 |
+----------+-----+-------+------+---+

rollupColumnsdepartment, regionで、aggExpressionssalary -> avg, age -> max (平均給与および最大年齢を計算)の場合、変換後のロールアップは次のようになります。

+----------+-------+-----------------+--------+
|department|region |avg(salary)      |max(age)|
+----------+-------+-----------------+--------+
|Eng       |foreign|900.0            |21      |
|Sport     |null   |1250.0           |28      |
|Art       |null   |2000.0           |32      |
|Eng       |null   |933.3333333333334|21      |
|Art       |foreign|2500.0           |30      |
|Eng       |local  |1000.0           |10      |
|null      |null   |1412.5           |32      |
|Sport     |local  |1250.0           |28      |
|Art       |local  |1000.0           |32      |
+----------+-------+-----------------+--------+
Spark SQL

最初に指定した表名を使用して一時ビューを作成することにより、受信データに対してSpark SQL問合せを実行します。

パラメータ 説明
SQL

実行するSQL文またはスクリプト。

例: select * from table1

tableName

Sparkが一時表を作成する際に使用する表名または表名のカンマ区切りリスト。

例: table1, table2

層別サンプリング

各層に指定されたサンプリング率に基づいて、置換なしで層別サンプルを生成します。

層別サンプルを表す新しいデータフレームを返します。

パラメータ 説明
strata_col

strataを定義する列。

fractions

0.0から1.0までの各層のサンプリング率。

たとえば、0.1は行の10%を返し、1.0は行の100%を返します。

小数点を指定しない場合、ゼロとみなされます。

sample_size

fractionsを指定しない場合は、サンプリングするデータセットの一部を0.0から1.0に指定します。

seed

seedで任意の乱数を使用して、毎回同じサンプルを返し、結果の一貫性を保ちます。

変換前:

+---+-----+
|key|value|
+---+-----+
|  1|    1|
|  1|    2|
|  2|    1|
|  2|    1|
|  2|    3|
|  3|    2|
|  3|    3|
+---+-----+

strata_colkeyで、fractionsが次の場合:

1 -> 1.0, 3 -> 0.5

変換後:

+---+-----+
|key|value|
+---+-----+
|  1|    1|
|  1|    2|
|  3|    2|
+---+-----+
サマリー

数値列および文字列列について指定された統計を計算します。

統計が指定されていない場合、次のすべてが計算されます。

  • COUNT
  • MEAN
  • STDDEV
  • MIN
  • おおよその四分位数(パーセンタイルは25%、50%、75%)
  • MAX
パラメータ 説明
statistics

統計のカンマ区切りリスト。

サポートされている値:

  • COUNT
  • MEAN
  • STDDEV
  • MIN
  • パーセンテージとして指定された1つ以上の任意の近似パーセンタイル(たとえば、75%)
  • MAX

例: count, mean, stddev, min, 27%, 41%, 95%, max

変換前:

+----------+------+-----------------+--------+
|department|gender|avg(salary)      |max(age)|
+----------+------+-----------------+--------+
|Eng       |female|900.0            |21      |
|Sport     |null  |1250.0           |28      |
|Art       |null  |2000.0           |32      |
|Eng       |null  |933.3333333333334|21      |
|Art       |female|2500.0           |30      |
|Eng       |male  |1000.0           |10      |
|null      |null  |1412.5           |32      |
|Sport     |male  |1250.0           |28      |
|Art       |male  |1000.0           |32      |
+----------+------+-----------------+--------+

statisticscount, mean, stddev, min, 27%, 41%, 95%, maxであるとします。

変換後:

+-------+----------+-----+------+----------------+----------------+
|summary|department|group|gender|salary          |age             |
+-------+----------+-----+------+----------------+----------------+
|count  |8         |8    |8     |8               |8               |
|mean   |null      |null |null  |1412.5          |20.5            |
|stddev |null      |null |null  |749.166203188585|8.76682056718072|
|min    |Art       |A    |female|800             |10              |
|27%    |null      |null |null  |1000            |13              |
|41%    |null      |null |null  |1000            |19              |
|95%    |null      |null |null  |3000            |32              |
|max    |Sport     |E    |male  |3000            |32              |
+-------+----------+-----+------+----------------+----------------+