すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:SQLに関するその他のFAQ

最終更新日:Dec 13, 2024

このトピックでは、MaxComputeのSQL文に関するよくある質問 (データ型に関連する質問やSQLの制限など) に対する回答を提供します。

カテゴリFAQ
データ型
SQLの制限
SQLジョブを実行する操作
SQLジョブを表示する操作
SQLジョブを調整する操作SQLジョブの実行が遅い場合のジョブ操作の効率を向上させるにはどうすればよいですか?

MaxComputeは、値に時間、分、秒の部分が含まれない時間フィールドをサポートしますか。

はい。MaxComputeでは、時間、分、秒の部分を含まない値の時間フィールドがサポートされます。 時間フィールドは、DATEデータ型とすることができる。 DATEデータ型を使用するには、MaxCompute V2.0データ型エディションを有効にする必要があります。 MaxCompute V2.0データ型エディションの詳細については、「MaxCompute V2.0データ型エディション」をご参照ください。

MaxCompute SQL文の実行中にDOUBLE型の値を同等に比較した結果が期待値を満たさないのはなぜですか。

MaxComputeのDOUBLE型の値の精度は異なります。 DOUBLE型の2つの値を比較するために、等号 (=) を使用しないことを推奨します。

この問題を解決するには、DOUBLEタイプの2つの値を減算し、絶対値を取ります。 絶対値が極端に小さい場合、DOUBLEタイプの2つの値は等しいと見なされます。

DECIMALデータ型の値の精度オーバーフローの問題を解決するにはどうすればよいですか?

セッションレベルでset odps.sql.de cimal.odps2=true; コマンドを実行して、MaxCompute V2.0データ型エディションを有効にします。 MaxComputeでサポートされているDECIMALデータ型の最大長は38ビットです。 ただし、業務処理中に最大長でデータを格納すると、データのオーバーフローが発生する可能性があります。 データのオーバーフローを回避するには、DECIMALデータ型の最大長を短くすることを推奨します。

新しく作成されたMaxComputeプロジェクトがデータ型間の暗黙的な変換をサポートしていない場合はどうすればよいですか。

暗黙的なデータ型変換をサポートするには、MaxCompute V2.0データ型エディションを無効にする必要があります。 データ型変換の詳細については、「型変換」をご参照ください。

データのクエリ時に "XXXtypeisnotenabled incurrentmode" エラーメッセージが表示された場合はどうすればよいですか?

セッションレベルでset odps.sql.de cimal.odps2=true; コマンドを実行して、MaxCompute V2.0データ型エディションを有効にします。

フィールドのサイズが8 MBを超える場合はどうすればよいですか?

MaxComputeテーブルの1つのフィールドのサイズは、ストレージの制限により8 MBを超えることはできません。 フィールドのサイズが8 MBを超える場合は、フィールドを複数のフィールドに分割することを推奨します。 各フィールドのサイズが8 MBを超えないように、ビジネスの特性に基づいて特定の分割ロジックを設計できます。

複雑な構造を持つ大きなフィールドは、データの開発と分析中のコンピューティングパフォーマンスに大きな影響を与えます。 大きなフィールドを避けるために、次のデータウェアハウス仕様に基づいてデータアーキテクチャを設計することを推奨します。
  • 複雑な構造を持つ生データを運用データストア (ODS) レイヤーでアーカイブする場合は、データを圧縮します。
  • ODSレイヤーで増分データのデータクレンジングを毎日など定期的に実行します。 複雑なフィールドを複数の単純なフィールドに分割し、共通データモデル (CDM) レイヤーのテーブルにフィールドを保存して、データの収集と分析を容易にします。

MaxCompute SQLステートメントを実行したときに「パーティションが指定された制限を超えた」というエラーメッセージが表示された場合はどうすればよいですか?

  • 問題の説明

    MaxCompute SQLステートメントを実行すると、次のエラーメッセージが表示されます。

    FAILED: ODPS-0010000:System internal error - OTS filtering exception - Ots read range partitions exceeds the specified limit:10000:  tableName:xxxx , please check hive conf key
  • 原因
    MaxComputeテーブルには、最大60,000のパーティションを含めることができます。 ただし、同時にクエリできるのは最大10,000個のパーティションのみです。 一般的な原因:
    • 原因1: パーティション条件が指定されていません。
    • 原因2: ユーザーIDに似たフィールドがパーティションフィールドとして使用されます。 その結果、過剰なパーティションが生成される。
  • 解決策
    • 原因1の解決策: パーティション条件を指定します。
    • 原因2の解決策: パーティションフィールドを変更します。

非インタラクティブモードでMaxCompute SQLを実行するにはどうすればよいですか?

オペレーティングシステムでは、シェルコマンドを使用して非インタラクティブモードでMaxCompute SQLを実行できます。
  • SQLファイルの読み取りと処理には、odps -f filenameを使用します。
    filenameパラメーターで指定されたファイルの最初の行はSQLです。これは、SQLモードが有効になっていることを示します。 例:
    SQL
    
      select ... from table_name where xxx;                
  • SQL文を1つだけ実行する場合は、MaxCompute SQLでsqltextメソッドを使用できます。 例:
    ./odpscmd -e "select * from dual;"             

    odps -helpを使用して、詳細情報を取得できます。

SQL文を使用して、Alibaba Cloudアカウントから別のAlibaba CloudアカウントにMaxCompute設定を転送できますか。

いいえ。SQL文を使用して、Alibaba Cloudアカウントから別のAlibaba CloudアカウントにMaxCompute設定を転送することはできません。 Alibaba Cloudアカウントから別のAlibaba CloudアカウントにMaxCompute設定を転送する場合は、パッケージ認証を使用できます。 パッケージ認証の詳細については、「MaxComputeマルチチームデータ開発プロジェクト管理のベストプラクティス」をご参照ください。

開発環境のテーブルから本番環境のテーブルにデータを同期するにはどうすればよいですか?

MaxComputeクライアントで次のコマンドを実行します。
insert into project.table select * from project_dev.table;
本番環境のテーブルに対する読み取りおよび書き込み権限がない場合は、アカウント認証を完了する必要があります。 権限付与の詳細については、「MaxCompute権限」をご参照ください。

フィールドが空かどうかを判断するにはどうすればよいですか?

MaxCompute SQLの演算子を使用して、フィールドが空かどうかを判断できます。 MaxCompute SQLの演算子の詳細については、「演算子」をご参照ください。

DataWorksのシェルノードを使用してMaxCompute SQLを呼び出すことはできますか。

DataWorksのシェルノードを使用してMaxCompute SQLを呼び出すことはできません。 シェルノードは、標準シェル構文のみをサポートします。 シェルノードはインタラクティブ構文をサポートしていません。 多数のジョブが存在する場合は、ODPS SQLノードを使用してジョブを実行できます。 ODPS SQLノードの詳細については、「MaxCompute SQLタスクの開発」をご参照ください。

SQLでループを実行するにはどうすればよいですか?

DataWorksのdo-whileノードを使用して、SQLでループを実行できます。

SQLで割り当てノードを呼び出すにはどうすればよいですか。

DataWorksのfor-eachノードを使用して、SQLで割り当てノードを呼び出すことができます。

MaxComputeプロジェクトで毎日実行されるすべてのSQL文を表示するにはどうすればよいですか?

show p -all -limit <number>; コマンドを実行して、MaxComputeプロジェクトのすべてのメンバーの履歴SQL情報を表示できます。 インスタンス情報の表示方法の詳細については、「インスタンス情報の表示」をご参照ください。

SQLジョブによって消費されたリソースの量を表示するにはどうすればよいですか。

SQLジョブで消費されたリソースの量を請求書で表示できます。 MaxCompute請求書の分析方法の詳細については、「MaxCompute請求書の使用記録の分析」をご参照ください。

SQLジョブの実行コストを見積もるにはどうすればよいですか。

cost sqlコマンドを実行して、SQLジョブの実行コストを見積もることができます。 cost sqlコマンドの詳細については、「コスト見積もり」をご参照ください。

SQLジョブの実行が遅い場合のジョブ操作の効率を向上させるにはどうすればよいですか?

Logviewを使用して、低速で実行されるSQLジョブを診断できます。 詳細については、「Logviewの診断ケース」をご参照ください。

SQLジョブを最適化する方法の詳細については、「コンピューティング最適化のベストプラクティス」をご参照ください。