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

MaxCompute:タイムゾーン設定操作

最終更新日:Dec 10, 2024

ここでは、SET コマンドを使用して MaxCompute プロジェクトのタイムゾーンを設定する方法について説明します。

タイムゾーン設定機能をサポートするジョブの種類は次のとおりです。

  • MapReduce

  • MaxCompute の Spark

    • タスクが MaxCompute コンピューティングクラスターにサブミットされると、プロジェクトのタイムゾーンが自動的に取得されます。

    • タスクがspark-shell、spark-sql、またはpysparkからyarn-clientモードで送信される場合、ドライバーのspark-defaults.confファイルにパラメーターを設定し、spark.driver.extraJavaOptions -Duser.timezone=America/Los_Angelesを追加する必要があります。 timezoneパラメーターは、使用するタイムゾーンを示します。

  • AI向け機械学習プラットフォーム (PAI)

  • グラフ

設定方法

デフォルトでは、MaxCompute プロジェクトのタイムゾーンは UTC+8 です。 DATETIME、TIMESTAMP、および DATE フィールドと関連する組み込みの時間関数はすべて、UTC+8 を基準に計算されます。 タイムゾーンを設定するには、下記のいずれかの方法を使用します。

  • セッションレベル: set odps.sql.timezone=<timezoneid>; ステートメントを実行用のコンピューティングステートメントとともに送信します。

    --Set the time zone to Asia/Tokyo. 
    SET odps.sql.timezone=Asia/Tokyo;
    --Query the current time zone. 
    SELECT getdate();
    output:
    +------------+
    | _c0        |
    +------------+
    | 2018-10-30 23:49:50 |
    +------------+
  • プロジェクトレベル: setProject odps.sql.timezone=<timezoneid>; ステートメントを実行します。 プロジェクト所有者だけがこのステートメントの実行権限を持っています。

    重要

    プロジェクトのタイムゾーンが設定された後、それはすべての時間計算に使用され、既存のジョブのデータが影響を受けます。 したがって、必要な場合にのみタイムゾーンを設定してください。 新しいプロジェクトにのみタイムゾーンを設定することを推奨します。

制限と使用に関する注意事項

  • SQL組み込み日付関数、ユーザー定義関数 (UDF) 、ユーザー定義型 (UDT) 、ユーザー定義結合 (UDJ) 、およびSELECT TRANSFORMステートメントを使用すると、プロジェクトのタイムゾーン属性を取得してタイムゾーンを設定できます。

  • タイムゾーンは、夏時間をサポートするAsia/Shanghaiなどの形式で設定する必要があります。 タイムゾーンをGMT + 9形式で設定しないでください。

  • SDK のタイムゾーンがプロジェクトのタイムゾーンと異なる場合は、GMT タイムゾーンを設定して、データ型を DATETIME から STRING に変換する必要があります。

  • タイムゾーンを設定すると、DataWorksで実行する関連SQL文のリアルタイムと出力時間に違いが生じます。 1900 年から 1928 年までの時間差は 352 秒です。 1900 年より前の時間差は 9 秒です。

  • MaxCompute、SDK for Java、および関連クライアントが更新され、MaxComputeに保存されているDATETIMEデータが複数のタイムゾーンで正しいことが保証されます。 Javaおよび関連クライアントに必要なSDKのバージョンには、-overseaというサフィックスが付いています。 この更新は、MaxComputeで1928された1月1日より前のDATETIMEデータの表示に影響する可能性があります。

  • MaxComputeを更新するときにローカルタイムゾーンがUTC + 8でない場合は、SDK for Javaおよび関連クライアントを更新することを推奨します。 これにより、1900年1月1日以降にTunnelコマンドを使用して転送されるSQLベースのコンピューティング結果とデータが正確で一貫性があります。 更新後、1900年1月1日より前のDATETIMEデータの場合、SQLベースのコンピューティング結果とTunnelコマンドを使用して転送されたデータの差は343秒です。 SDK For Javaおよび関連クライアントが更新される前に1928およびアップロードされる1月1日より前のDATETIMEデータの場合、新しいバージョンの時刻は352秒前です。

  • SDK for Javaとクライアントを -overseaサフィックスのバージョンに更新しない場合、SQLベースのコンピューティング結果は、Tunnelコマンドを使用して転送されたデータとは異なります。 1900年1月1日より前のデータの場合、時差は9秒です。 1900年1月1日から1928年1月1日までのデータの場合、時差は352秒です。

    説明

    SDK for Javaまたは関連クライアントでタイムゾーン設定を変更しても、DataWorksのタイムゾーン設定には影響しません。 したがって、タイムゾーンは異なります。 DataWorksでスケジュールされたジョブの影響を評価する必要があります。 日本 (東京) リージョンのDataWorksサーバーのタイムゾーンはGMT + 9、シンガポール (シンガポール) リージョンのタイムゾーンはGMT + 8です。

  • Java Database Connectivity (JDBC) を使用してMaxComputeに接続されているサードパーティクライアントを使用する場合、クライアントとサーバー間の時間の整合性を確保するために、クライアントのタイムゾーンを設定する必要があります。