Share via


ゲートウェイ サポートの処理

接続をテスト

カスタム コネクタのサポートは、オンプレミス データ ゲートウェイの個人用モードと標準モードの両方で使用できます。 どちらのゲートウェイ モードでも、インポートがサポートされます。 直接クエリは、標準モードでのみサポートされます。 ゲートウェイ経由のカスタム コネクタの OAuth は現在、ゲートウェイ管理者のみがサポートされており、他のデータ ソース ユーザーはサポートされていません。

TestConnection 機能を実装する方法は、Power BI カスタム データ コネクタ機能のプレビュー中に変更される可能性があります。

オンプレミス データ ゲートウェイを介したスケジュール済みの更新をサポートするには、コネクタで TestConnection ハンドラーを実装する必要があります。 関数は、ユーザーがソースの資格情報を構成するときに呼び出され、有効であることを確認するために使用されます。 TestConnection ハンドラーは、データ ソースの種類レコードで設定され、次のシグネチャを備えています。

(dataSourcePath) as list => ...

ここで dataSourcePath は関数のデータ ソース パス値で、戻り値は次で構成されるリストです。

  • 呼び出す関数の名前 (この関数は #shared としてマークする必要があります。通常はプライマリ データ ソース関数です)。
  • 関数に渡す 1 つ以上の引数。

関数の呼び出しでエラーが発生した場合、TestConnection は失敗したと見なされ、資格情報は保持されません。

Note

上記のように、TestConnection によって提供される関数名は shared メンバーである必要があります。

例: 必須の引数がないコネクタ

下のコード スニペットは、必須パラメーターを持たないデータ ソース (TripPin チュートリアルにあるものなど) の TestConnection を実装しています。 必須パラメーターのないコネクタ ("シングルトン" と呼ばれます) では、接続をテストするために (資格情報以外は) ユーザー入力の必要はありません。 この場合、dataSourcePath 値はデータ ソースの種類の名前と等しく、無視できます。 TripPin.Contents 関数は、追加のパラメーターなしで呼び出されます。

TripPin = [
    TestConnection = (dataSourcePath) => { "TripPin.Contents" },
    Authentication = [
        Anonymous = []
    ],
    Label = "TripPin"
];

例: URL パラメーターを使用したコネクタ

データ ソース関数に Uri.Type 型の 1 つの必須パラメーターがある場合、その dataSourcePath はユーザーが指定した URL と同じになります。 下のスニペットは、Github サンプルの TestConnection 実装を示しています。

GithubSample = [
    TestConnection = (dataSourcePath) => {"GithubSample.Contents", dataSourcePath},
    Authentication = [
        OAuth = [
            StartLogin = StartLogin,
            FinishLogin = FinishLogin,
            Label = Extension.LoadString("AuthenticationLabel")
        ]
    ]
];

例: 必須パラメーターを使用したコネクタ

データ ソース関数に複数のパラメーターがある場合、または単一の非 URL パラメーターがある場合、dataSourcePath 値はそれらのパラメーターを含む JSON 文字列になります。 下のスニペットは、DirectQueryForSQL サンプルから取得されています。

DirectSQL = [
    TestConnection = (dataSourcePath) =>
        let
            json = Json.Document(dataSourcePath),
            server = json[server],
            database = json[database]
        in
            { "DirectSQL.Database", server, database },
    Authentication = [
        Windows = [],
        UsernamePassword = []
    ],
    Label = "Direct Query for SQL"
];