このトピックでは、MaxComputeのテーブル、パーティション、および列に対するDDL操作に関するよくある質問に対する回答を提供します。
カテゴリ | よくある質問 |
テーブル操作 | |
パーティション操作 | |
列操作 | |
ライフサイクル管理操作 | パーティションテーブルのライフサイクルを3日に設定し、テーブルの各パーティションに大量のデータが含まれている場合、システムはテーブルの履歴データをどのように削除しますか? |
MaxComputeはMySQLのDUALテーブルなどの仮想テーブルをサポートしていますか?
MaxComputeは仮想テーブルをサポートしていません。 手動でDUALテーブルを作成できます。
MaxComputeテーブルにインデックスがありますか。
MaxComputeテーブルにはインデックスがありません。 ハッシュクラスタリング属性を使用すると、データベースのクラスタ化インデックスと同じ効果を得ることができます。 詳細については、「テーブル操作」をご参照ください。
テーブルのハッシュクラスタリング属性を管理するにはどうすればよいですか?
テーブルのHash Clustering属性を追加するには、次のコマンドを実行します。
alter table table_name [clustered by (col_name [, col_name [, col_name, ...])) [sorted by (col_name [asc | desc] [, col_name [asc | desc] ...]]] inounber_of_buckets];テーブルのハッシュクラスタリング属性を削除するには、
alter table table_name not clustered;コマンドを実行します。
非パーティションテーブルをパーティションテーブルに変更するにはどうすればよいですか?
非パーティションテーブルをパーティションテーブルに変更したり、パーティションキー列を追加したりすることはできません。 パーティション分割テーブルを作成できます。 詳細については、「テーブル操作」をご参照ください。
誤って削除されたテーブルを復元できますか?
はい。MaxComputeはバックアップおよび復元機能をサポートしているため、削除したテーブルを復元できます。 誤ってテーブルを削除した場合は、バックアップおよび復元コマンドを実行して、24時間以内にテーブルを無料で復元できます。 バックアップデータの保持期間をカスタマイズできます。 テーブルを削除してから24時間以内に、バックアップおよび復元コマンドを実行してテーブルデータを復元できます。 バックアップと復元機能の詳細については、「バックアップと復元」をご参照ください。
指定したユーザーが作成したテーブルをクエリするにはどうすればよいですか。
指定したユーザーが作成したテーブルを照会する場合は、メタデータビューtablesを使用して、owner_nameフィールドに基づいてテーブルをフィルタリングできます。 テーブルの詳細については、「テーブル」をご参照ください。
指定されたテーブルが存在するかどうかを確認する方法
TABLE_EXISTS関数を使用して、指定されたテーブルが存在するかどうかを確認できます。 詳細については、「TABLE_EXISTS」をご参照ください。
プロジェクト内のすべてのテーブルの名前を取得するにはどうすればよいですか?
MaxComputeクライアントでshow tables; コマンドを実行するか、MaxComputeのメタデータサービスを使用してプロジェクト内のすべてのテーブルの名前を取得できます。 詳細については、「テーブル操作」または「情報スキーマ」をご参照ください。
プロジェクト内のパーティションテーブルをすばやく識別するにはどうすればよいですか?
MaxComputeクライアントで次のコマンドを実行して、プロジェクト内のパーティションテーブルを表示できます。
select table_name from information_schema.columns where is_partition_key = true group by table_name;指定されたMaxComputeテーブルに最近アクセスされた時刻を表示するにはどうすればよいですか。
節約プランがどのように適用されるか (割引額、プランの詳細、使用状況、対象範囲を含む) に関する詳細を表示するには、
DataWorksのデータマップページ。 次に、テーブル名をクリックして、テーブルの詳細ページでテーブルの最終アクセス時刻を表示します。 
テーブルのデータ量を表示するにはどうすればよいですか?
テーブル内のデータレコードの数と、テーブルが占有している物理スペースを表示できます。
descコマンドを実行して、テーブル全体の物理領域を表示できます。 SQL文select count() as cnt from table_name;を実行して、テーブル内のデータレコード数を表示できます。
WHERE句を指定して
descコマンドを実行すると、パーティションテーブルのパーティションによって占有されている物理スペースを表示できます。 SQL文select count() as cnt from table_name where ...;を実行して、パーティション内のデータレコードの数を表示できます。
テーブルの行数を表示するにはどうすればよいですか?
MaxComputeクライアントでselect count(*) from table_name; ステートメントを実行して、パーティションテーブルまたは非パーティションテーブルの行数を表示できます。
DataWorksコンソールで作成したテーブルを表示できないのはなぜですか。
DataWorksのグラフィカルユーザーインターフェイス (GUI) ではなくSQL文を使用してテーブルを作成した場合、テーブルは作成後2〜3時間でDataWorksコンソールに表示されます。
パーティションとパーティションキー列の違いは何ですか?
MaxComputeのテーブルはパーティション分割できます。 パーティションテーブルには、パーティションキー列が含まれます。 パーティションキー列を使用してパーティションを作成できます。
たとえば、ds=20150101のdsはパーティションキー列を示し、ds=20150101はパーティションを示します。
テーブルに多数のパーティションを含めることをお勧めしますか?
MaxComputeのテーブルには最大60,000個のパーティションを設定でき、各パーティションの容量に制限はありません。 ただし、テーブル内のパーティションが多すぎると、データの収集と分析に不便が生じます。
MaxComputeでは、ジョブ内のインスタンス数に制限があります。 ジョブ内のインスタンスの数は、入力データの量とパーティションの数と密接に関係しています。 したがって、ビジネス要件に基づいてテーブル内のパーティション数を決定することをお勧めします。
ソーステーブルにパーティションフィールドがない場合、ソーステーブルのパーティションフィールドを追加または変更できますか?
MaxComputeでは、ソーステーブルのパーティションフィールドを追加または変更することはできません。 パーティションフィールドの作成後は、変更できません。 パーティションテーブルを作成し、動的パーティション分割に使用されるSQLステートメントを使用して、ソーステーブルから新しいパーティションテーブルにデータをインポートできます。 詳細については、「動的パーティションへのデータの挿入または上書き (dynamic PARTITION) 」をご参照ください。
指定されたパーティションが存在するかどうかを確認する方法
PARTITION_EXISTS関数を使用して、指定されたパーティションが存在するかどうかを確認できます。 PARTITION_EXISTS関数の詳細については、「PARTITION_EXISTS」をご参照ください。
パーティションの数を取得するにはどうすればよいですか?
情報スキーマのプロジェクトレベルの情報スキーマ ビューを使用して、パーティション名を取得できます。 次に、パーティションの数を数えることができます。
MaxComputeテーブルに列を追加または削除できますか。
はい。MaxComputeテーブルに列を追加または削除できます。 複雑なデータ型の列を追加する機能と列を削除する機能は、招待プレビューにあります。 新機能のトライアル使用の申請方法の詳細については、「新機能のトライアル使用の申請」をご参照ください。
MaxComputeテーブルに列を追加するにはどうすればよいですか?
次の例は、MaxComputeテーブルに列を追加する方法を示しています。 テーブルにデータが存在する場合、追加された列の値はNULLになります。
alter table table_name add columns (col_name1 type1, col_name2 type2…);列の追加方法の詳細については、「列の追加」をご参照ください。
自動インクリメント列を設定するにはどうすればよいですか?
MaxComputeは、自動インクリメント列をサポートしていません。 自動インクリメント列を使用し、データ量が少ない場合は、ROW_NUMBERを使用することを推奨します。
MaxComputeテーブルに格納できる列の最大数はいくつですか。
MaxComputeテーブルには、最大1,200個の列を格納できます。 列数が制限を超えている場合は、次のいずれかの操作を実行します。
データに対してディメンションの削減を実行して、列の数を1,200以下に減らします。
データの保存方法を変更します。 たとえば、デバイス証明書を使用するか、スパースまたは密行列を使用します。
作成するテーブルの列の名前がキーワードと同じ場合はどうすればよいですか?
キーワードを使用してテーブル、列、またはパーティションに名前を付ける場合は、キーワードを2つの重大なアクセント ('') で囲む必要があります。 それ以外の場合は、エラーが返されます。
列のデータ型を変更するにはどうすればよいですか?
列のデータ型は変更できません。 追加できるのは列のみです。 運用環境では、テーブルのテーブルフィールドを削除したり、テーブルフィールドやパーティションフィールドを変更したりすることはできません。 テーブルの列のデータ型を変更する必要がある場合は、テーブルを削除してテーブルを再作成する必要があります。 外部テーブルを作成することもできます。 テーブルを削除して再作成した後、データをリロードできます。 データ型の詳細については、「data type editions」をご参照ください。
パーティションテーブルのライフサイクルを3日に設定し、テーブルの各パーティションに大量のデータが含まれている場合、システムはテーブルの履歴データをどのように削除しますか?
テーブル内のパーティションがライフサイクル内で変更されない場合、MaxComputeは自動的にパーティションを再要求します。
desc table_name partition(pt_spec); コマンドを実行して、指定されたパーティションがライフサイクル内で変更されているかどうかを確認できます。 desc tablename; コマンドを実行して、テーブルのライフサイクルを照会できます。 MaxComputeは、毎日17:00:00にテーブルとパーティションを再利用します。 ほとんどの場合、関連データは1日の遅延でDataWorksに表示されます。