DataWorks Notebook は、データ分析と開発のための対話的でモジュール化された環境を提供します。Python、SQL、Markdown セルを使用して、MaxCompute、EMR、AnalyticDB などのコンピュートエンジンに接続できます。これにより、データ処理や探索的分析から、可視化、モデル開発に至るまでのワークフロー全体を管理できます。このトピックでは、Notebook を効率的に使用してデータ開発とタスクのスケジューリングを行う方法について説明します。
最初の Notebook の実行
このセクションでは、Notebook を作成し、Python から SQL へパラメーターを渡し、MaxCompute テーブルからデータをクエリする簡単な手順を説明します。
始める前に、以下の要件を満たしていることを確認してください:
現在のワークスペースで新しい DataStudio が有効になっていること。
サーバーレスリソースグループが作成されていること。Notebook を本番環境で実行するには、サーバーレスリソースグループが必要です。
個人開発環境インスタンスが作成されていること。Notebook を開発環境で実行およびデバッグするには、個人開発環境インスタンスが必要です。
作成していない場合は、「個人開発環境インスタンスの作成」をご参照ください。
操作手順:
Notebook ノードの作成
[DataStudio] で、[ワークスペースディレクトリ] の下にノートブックノードを作成します。
Notebook の名前 (例:
hello_notebook) を入力し、送信します。
個人開発環境の選択
上部のナビゲーションバーで、[個人開発環境] をクリックし、次にドロップダウンリストからお使いの個人開発環境インスタンスを選択します。
パラメーターを定義する Python セルの作成
Python セルを追加し、次のコードを入力します。このステップでは、後続の SQL クエリのために city 変数を定義します。
# 後続の SQL クエリ用の変数を定義 city = 'Beijing' print(f"Defined city variable city = {city}")データをクエリする SQL セルの作成
最初のセルの下に、SQL セルを追加します。
セルの右下隅で、SQL タイプを
MaxCompute SQLに切り替えます。次の SQL コードを入力します。このコードは、前の Python セルで定義された
city変数を${city}構文で参照します。-- Python で定義された変数を使用してクエリを実行 SELECT '${city}' AS city;
セルの実行と結果の表示
Notebook の上部にあるツールバーの [すべて実行] ボタンをクリックします。
各セルの実行結果を確認します:
Python セルの下の出力に
Defined city variable city = Beijingと表示されます。SQL セルの下にクエリ結果がテーブル形式で表示されます。
これで、Python と SQL の連携を含む Notebook の作成と実行が正常に完了しました。
基本概念
以下の基本概念を理解することは、開発環境と本番環境で Notebook の動作を一貫させるための鍵となります。
開発環境と本番環境
項目 | 開発環境 | 本番環境 |
ランタイム環境 | 個人開発環境インスタンス | [スケジューリング] で指定: [リソースグループ] と [イメージ] |
主な違い | 専用の開発インスタンスを使用し、デバッグのために Python ライブラリを自由にインストールできます。 | タスクは、スケジューリング構成で指定されたリソースグループ上で実行されます。これは、オペレーションセンターから定期的にスケジュールされるタスクや、DataStudio で手動でトリガーされるワークフローに適用されます。ライブラリやネットワーク設定を含む環境は、選択したイメージとリソースグループに依存します。 |
一貫性を確保する方法 | `pip install` などの方法で個人開発環境インスタンスに Python パッケージをインストールした場合、本番環境と依存関係を一致させるには、個人開発環境から DataWorks イメージを作成する必要があります。その後、[スケジューリング] でこのカスタムイメージを選択します。詳細については、「個人開発環境から DataWorks イメージを作成する」をご参照ください。 重要 ネットワーク接続:デフォルトでは、VPC にアタッチされていない個人開発環境には、帯域幅が制限されたランダムなパブリック IP アドレスが割り当てられ、パブリックネットワークへのアクセスが可能です。Notebook ノードが公開されると、そのネットワークはスケジューリング構成のリソースグループによって決定されます。ネットワークの一貫性を確保するには、個人開発環境に同じリソースグループをアタッチしてください。 | |
コンピューティングリソースとカーネル
コンピューティングリソース:Notebook に接続されたバックエンドのコンピュートエンジン (例:MaxCompute、EMR Serverless Spark)。SQL セルを実行するには、コンピューティングリソースにバインドする必要があります。
Python カーネル:Python コードを実行するバックエンド環境。DataWorks Notebook では、通常はご利用の個人開発環境インスタンスです。Python コード内で
%odpsなどのマジックコマンドを使用して、コンピューティングリソースに接続し、タスクを送信したりデータを操作したりできます。
フォルダタイプと利用シーン
Notebook を作成する場所によって、コラボレーションモデル、権限、公開フローが決まります。
フォルダタイプ | ユースケース | コラボレーションとデプロイ |
ワークスペースディレクトリ | チームコラボレーションと定期タスク。このフォルダ内のノードはワークスペース内で共有され、標準的な開発、送信、デプロイのフローに従います。 | 複数のユーザーが共同で開発できます。ノードを定期的にスケジュールするには、本番環境にデプロイする必要があります。 |
個人用ディレクトリ | 個人での開発とデバッグ。このフォルダは他のワークスペースメンバーには表示されず、個人用スクリプトや一時的なタスクに使用されます。 | 自分にのみ表示されます。スケジュールするには、ノードをまずワークスペースディレクトリに送信してからデプロイする必要があります。 |
Notebook の開発とデバッグ
DataStudio はデフォルトでコードを自動的に保存しません。データの損失を防ぐために、開発中にコードを頻繁に手動で保存することをお勧めします。また、Data Studio エディターで [設定] > [ファイル: 自動保存] に移動して、自動保存を有効にすることもできます。
Notebook の動作が遅くなったり、応答しなくなったりした場合は、上部のツールバーにある[再起動]ボタンをクリックしてカーネルを再起動できます。
セルの管理
セルの追加: 既存のセルの上端または下端にマウスカーソルを合わせ、表示される [+ SQL] などのボタンのいずれかをクリックします。 上部のツールバーのボタンも使用できます。
セルタイプの切り替え:セルの右下隅にあるタイプ識別子 (例:
Python) をクリックし、メニューから新しいタイプ (例:SQLやMarkdown) を選択します。タイプを切り替えてもセル内のコードは保持されます。新しいタイプに合わせて手動で修正する必要があります。セルの移動:セルの左側にある青い縦線にカーソルを合わせ、クリックしてドラッグすることで順序を変更します。
セルの実行:
単一セルの実行:[実行] をクリックします。
すべてのセルを実行: Notebook ツールバーの [すべて実行] をクリックします。
パラメーターの受け渡し
Python 変数の SQL への受け渡し
Python セルで定義された変数は、後続の SQL セルで ${variable_name} 形式を使用して直接参照できます。
例:
Python セル
table_name = "dwd_user_info_d" limit_num = 10SQL セル
SELECT * FROM ${table_name} LIMIT ${limit_num};
SQL の結果の Python への受け渡し
SQL セルが SELECT クエリを実行すると、その結果は自動的に DataFrame 変数に保存されます。この変数は後続の Python セルで使用できます。
複数の SQL 文がある場合、最後の文の結果のみが DataFrame 変数に保存されます。
変数名:デフォルトでは、変数名は
df_で始まります。SQL セルの左下隅にある変数名をクリックして名前を変更できます。変数の型:
複数の変数の型がサポートされている場合は、左下隅の DataFrame をクリックして型を切り替えます。
MaxCompute SQL の場合、
Pandas DataFrameとMaxCompute MaxFrameオブジェクトがサポートされています。AnalyticDB for Spark SQL の場合、
Pandas DataFrameとPySpark MaxFrameオブジェクトがサポートされています。その他の SQL タイプの場合、
Pandas DataFrameオブジェクトが生成されます。
例:

Copilot によるプログラミング支援
DataWorks Copilot は、コードの生成と説明を支援する組み込みのインテリジェントプログラミングアシスタントです。
呼び出し:
選択したセルの左上隅にある Copilot
アイコンをクリックします。SQL セル内を右クリックし、Copilot を選択します。
キーボードショートカット
Cmd+I(Mac) またはCtrl+I(Windows) を使用します。
Notebook のスケジューリングと公開
Notebook を定期的なスケジュールで実行するには、スケジューリング設定を構成し、本番環境に公開する必要があります。
1. スケジューリングパラメーターの設定
スケジュールされた実行ごとに Notebook のパラメーターを動的に変更する必要がある場合 (例:毎日異なるパーティションのデータを処理する)、パラメーター化されたスケジューリングを設定できます。
パラメーターセルのマーク: コアパラメーター定義を含む Python セルで、右上隅にある
...メニューをクリックし、[セルをパラメーターとしてマーク] を選択します。これにより、セルにparametersタグが追加され、スケジューリングタスクのパラメーターエントリポイントとしてマークされます。
スケジューリングパラメーターの設定:
Notebook の右ペインで、[スケジューリング] をクリックします。
[スケジューリングパラメーター] エリアで、コードで定義されている変数(
varなど)に値を割り当てます。
タスクがスケジューリングシステムによって自動的に実行されると、コード内の var パラメーターの実際の値は、スケジューリングパラメーターで構成された値に動的に置き換えられます。
2. ランタイム環境とリソースの設定
イメージの設定: [スケジューリング] で、Notebook の実行に必要なすべての依存関係を含むイメージを選択します。これは、本番環境での実行を成功させるためのキーとなります。
重要`pip install` などのメソッドを使用して個人開発環境インスタンスに Python パッケージをインストールする場合、本番環境で同じ依存関係を確保するには、個人開発環境から DataWorks イメージを作成する必要があります。その後、[スケジューリング] でこのカスタムイメージを選択します。詳細については、「個人開発環境から DataWorks イメージを作成する」をご参照ください。
リソースグループの設定:タスクの実行に使用するリソースグループを選択します。サーバーレスリソースグループの場合、リソース不足によるタスクの起動失敗を防ぐため、
16 CU以下で構成することを推奨します。単一のタスクは最大64 CUをサポートします。関連ロールの設定:詳細な権限コントロールのために、特定の RAM ロールをノードに関連付けることができます。これにより、ノードはそのロールの ID で実行されます。詳細については、「ノードの関連ロールを設定」をご参照ください。
3. ノードの公開
ワークスペースディレクトリ内のノードのみが公開され、定期的にスケジュールできます。
ワークスペースディレクトリ内のノートブックの場合: 構成が完了したら、上部ツールバーの [公開] ボタンをクリックします。
個人ディレクトリ内のノートブックの場合: デプロイメントの前に、[保存] ボタンをクリックしてから [ワークスペースディレクトリにコミット] をクリックする必要があります。
Notebook が公開されると、[オペレーションセンター] 内の [自動トリガーノード] ページで Notebook タスクをモニターおよび管理できます。
よくある質問
Q:開発中はコードがパブリックネットワークにアクセスできるのに、スケジュール実行中に失敗するのはなぜですか?
A:これは、開発環境と本番環境のネットワークポリシーが異なるためです。
開発環境:デバッグの便宜上、VPC が構成されていない個人開発環境インスタンスは、デフォルトで限定的なパブリックネットワークアクセスを提供します。これにより、一時的にパッケージをインストールしたり、API を呼び出したりできます。
本番環境: セキュリティと安定性を確保するために、タスクはデフォルトで VPC で実行され、パブリックネットワークに直接アクセスすることはできません。タスクのネットワーク構成は、[スケジューリング] で選択したリソースグループによって決まります。リソースグループの VPC に NAT Gateway が構成されていない場合、タスクはパブリックネットワークにアクセスできません。
解決策:個人開発環境インスタンスとサーバーレスリソースグループが同じ VPC 内に設定されていることを確認してください。
Q:開発環境ではコードが正常に実行されるのに、スケジュール実行中にサードパーティパッケージが見つからずに失敗するのはなぜですか?
A: Python ライブラリなどのすべての依存関係をカスタムイメージにパッケージ化し、[スケジューリング] でこのイメージを指定してください。詳細については、「個人開発環境から DataWorks イメージを作成する」をご参照ください。
Q:Python カーネルのバージョンを変更するにはどうすればよいですか?
A:個人開発環境のターミナル
で必要な Python バージョンを手動でインストールできます。その後、Notebook ツールバーの右側にある
ボタンをクリックして、別の Python カーネルバージョンに切り替えます。追加の Python カーネルをインストールすることは推奨しません。新しいバージョンには SQL セルが必要とする依存関係が欠けている可能性があり、正常に機能しなくなることがあります。