ポイント Power BI で REST APIデータベースドライバではありません
Power BI は通常、マシン上のドライバーと、スケジュールされた更新の場合はオンプレミスのゲートウェイを介してデータベースにアクセスします。クエリ ストリームのエンドポイントはプレーンな HTTPS URL なので、Power BI Desktop と Power BI サービスは組み込みの Web コネクタを使用してそれを読み取ります。ポータルは Power Query M を自動的に書き込みます。 エクスポート → Power Query M (.pq)貼り付けて、キーを追加すれば完了です。同じファイルはExcelでも動作します。
最終的に手に入るもの
HTTPS経由で保存されたSQLクエリによってフィードされるPower BIテーブルは、エンドポイントが一般的なWeb APIのように見えるため、オンプレミスのゲートウェイなしでサービス内で更新できます。ポータルコンソールでは、エンドポイント自体は次のようになります。
| 鍵 | 価値 | 説明 |
|---|---|---|
市 文字列 オプション | シアトル | 保存されたクエリからの呼び出し可能なフィルター |
X-APIキー | qsapi_AB•••••••••• | あなたの秘密のトークン |
{
"市": 「シアトル」
}| ヘッダ | 価値 | 説明 |
|---|---|---|
X-APIキー | qsapi_AB•••••••••• | あなた専用の秘密トークン。発信者1人につき1つ。いつでも取り消し可能。 |
コンテンツタイプ | アプリケーション/json | パラメータはJSONボディとして送信されます |
受け入れる | アプリケーション/json | JSON形式で返されます。テキスト/CSVを要求するとCSVが返されます。 |
curl -X POST "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19" \ -H "X-API-Key: qsapi_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"city": "Seattle"}'{
「列」: [ { "名前": 「顧客ID」, "タイプ": "整数" }, { "名前": "名前", "タイプ": "弦" }, { "名前": "市", "タイプ": "弦" } ],
「行」: [
{ 「顧客ID」: 1042, "名前": 「ノースウィンド・トレーダーズ」, "市": 「シアトル」 },
{ 「顧客ID」: 1057, "名前": 「アルパイン・アウトフィッターズ」, "市": 「デンバー」 },
{ 「顧客ID」: 1063, "名前": 「ハーバーフーズ」, "市": 「ハリファックス」 }
],
「メタ」: { 「行数」: 3, 「agent_duration_ms」: 41, 「リクエストID」: "req_7Hq2mKd9" }
}| ヘッダ | 価値 | 説明 |
|---|---|---|
コンテンツタイプ | application/json; charset=utf-8 | 本文タブの封筒 |
コンテンツの長さ | 412 | バイト数が返されました。上のサイズバッジ |
ドライバーが存在する理由は、Power BI が実行場所に関係なく各データベースのワイヤプロトコルと通信する必要があるためです。そのため、スケジュールされた更新にはネットワーク内にゲートウェイが必要になります。エンドポイントを使用すれば、データベースに既に存在するエージェントがクエリを実行し、api.querystreams.com が HTTPS 経由で Power BI に応答します。そのため、Power BI がインストールする必要のあるものも、サービスがトンネル接続する必要のあるものもありません。
必要なもの
クエリストリームアカウント
すべてのプランにREST APIが含まれています。無料プランでは、エンドポイント1つ、キー2つ、呼び出しごとに250行まで利用できます。これはこのガイドを作成するのに十分です。サインアップはこちらから。 my.querystreams.com.
接続を追加した、自分のデータベースにアクセスできるコンピュータ上のエージェント
多くの場合、データベースサーバー自体、または同じネットワーク上の常時稼働しているコンピューターです。
クエリビルダーに保存されたクエリ
エンドポイントは、保存されたクエリを正確に 1 つラップします。SELECT を記述し、一度実行して保存します。動的フィルタ ( 変数 呼び出し元がフィルタリングできるようにするためには、WHERE句で指定します。
エンドポイントを作成できるのは誰ですか? オーナー、管理者、クリエイター。 API トップバーにアイテムが表示されていません。管理者は、以下の手順でユーザーに対してアイテムを有効にできます。 アカウント → 権限エンドポイントを共有する相手は、どのプランでもQuery Streamsアカウントさえあれば問題ありません。
さらに Power BI Desktop、または Excel 2016 以降が必要です。エンドポイントがまだない場合は、 データベースREST APIハブ 保存したクエリからURLを作成するまでの手順を4つ紹介します。
Power BI を接続するには、次の 4 つのステップを実行します。
Power Query M ファイルをエクスポートする
で API エンドポイントを開いて、クリックします 輸出 そして選択する Power Query M (.pq)ファイルは完全なものです
…をエンドポイントURLと呼び出し可能なパラメータが既に設定された式です。次のようになります。エクスポート · Power Query M (.pq)させて ソース = JSON。書類(ウェブ。コンテンツ( "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19", [ヘッダー = [#「X-APIキー」 = 「qsapi_YOUR_KEY」], クエリ = [圧縮 = "なし"]])), rows = Source[rows], table = Table.フロムレコード(行) で テーブル
輸出は常に要求する
圧縮なしPower QueryはLZ4フレームをデコードできないため、Power BIが想定しているのはgzipで圧縮されたJSON形式です。Power BIに貼り付けてください
Power BI Desktopで、 ホーム → データ変換 → 新しいソース → 空のクエリ開く 高度なエディターファイルの内容に置き換えてクリックします 完了Excelではパスは データ → データの取得 → 他のソースから → 空のクエリ次に、同じ高度なエディターを開きます。
キーを追加
プレースホルダーを、49文字のキーに置き換えてください。
qsapi_エンドポイントから 共有 タブ。Power BI が接続方法を尋ねてきたら、 匿名: 鍵はX-APIキークエリが既にヘッダーを設定しているため、Power BIの認証情報は不要です。読み込みと更新
クリック 閉じる&適用.
行配列はクエリ列ごとに 1 つの列を持つテーブルになります。Power BI サービスに発行し、更新スケジュールを設定します。ソースは Web URL であるため、オンプレミス ゲートウェイは不要です。各更新はエンドポイントの 1 つの呼び出しです。 活動 タブ。
それでおしまい。 Power BI は HTTPS 経由でリアルタイムの行を読み取り、データベースはファイアウォールの内側に保持され、レポートの所有者は SQL やデータベースへのログイン情報を見ることはありません。
Power BI が行うリクエスト
内部的には、curl で実行できる呼び出しと同じです。Callable とマークされたパラメーターは Power Query から渡すことができます。 クエリ = [city = "シアトル"]:
curl "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19?city=Seattle" \ -H "X-API-Key: qsapi_YOUR_KEY"
{
「列」: [ { "名前": 「顧客ID」, "タイプ": "整数" }, { "名前": "名前", "タイプ": "弦" }, { "名前": "市", "タイプ": "弦" } ],
「行」: [
{ 「顧客ID」: 1042, "名前": 「ノースウィンド・トレーダーズ」, "市": 「シアトル」 },
{ 「顧客ID」: 1057, "名前": 「アルパイン・アウトフィッターズ」, "市": 「デンバー」 },
{ 「顧客ID」: 1063, "名前": 「ハーバーフーズ」, "市": 「ハリファックス」 }
],
「メタ」: { 「行数」: 3, 「agent_duration_ms」: 41, 「リクエストID」: "req_7Hq2mKd9" }
}行は列名をキーとするオブジェクトとして返され、列リストと メタ 行数、結果が切り捨てられたかどうか、およびサポートのために引用できるリクエスト ID を示すブロック。POST と同じ呼び出しでパラメータが JSON ボディに格納されます。これは、長い値のリストに適した方法です。
curl -X POST "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19" \ -H "X-API-Key: qsapi_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"params": {"city": "Seattle"}}'?format=csv- JSONではなくCSV形式で、ヘッダー行も含まれます。
受け入れ可能な形式: text/csvも同様です。ストリーミングエンドポイントは、最終的な NDJSON (1 行に 1 つの JSON オブジェクト) を返します。{"_summary": true, "row_count": N}行; 最後の行を確認してください。 ?sample=true- 最大5行まで、課金対象外。顧客への配線に最適です。
?圧縮=lz4- デコーダーを備えた大音量発信者向けのLZ4フレームボディ。 コード タブには言語ごとのデコーダーのスニペットがあります。通常のgzipは、クライアントが送信するときに自動的に行われます。
Accept-Encoding: gzip. 認証: Bearer qsapi_…- 別名として受け入れられた
X-APIキーブラウザのコードから使用します。
Power BI を超えて
ExcelとPower BI
エクスポート → Power Query M (.pq) すぐに使えるクエリが提供されます。それを詳細エディター(Excel:データ → データの取得 → 他のソースから → 空白のクエリ、Power BI:ホーム → データの変換 → 新しいソース → 空白のクエリ)に貼り付け、プレースホルダーを置き換えます。 qsapi_ 鍵。
郵便配達人、不眠症、ホップスコッチ
同じ 輸出 メニューは、Postman v2.1 コレクション、Insomnia v5 エクスポート、またはパラメーターが入力され、キーのプレースホルダーが設定された Hoppscotch コレクションをダウンロードします。
あなた自身のコード
の コード このタブには、cURL、Python、JavaScript、TypeScript、Java、C#、Go、PHP、PowerShell、Rubyの動作サンプルが含まれています。 エクスポート → OpenAPI 3.1仕様 あらゆるクライアントジェネレーターまたはSwagger UIにデータを提供します。
n8n、Zapier、Make、cron
作成する サービスキー ツールを実行するには、URLとキーをHTTPノードに貼り付けてスケジュール設定してください。各ツールにはそれぞれ固有のキーが割り当てられるため、他のツールに影響を与えることなく、1つのツールのキーを無効にすることができます。
計画で許可されている内容
| プラン | エンドポイント | エンドポイントごとのキー | エンドポイントあたりの人数 | 呼び出しごとの行数(静的) | 1回の呼び出しあたりの行数(ストリーミング) | 1分あたりの通話数、キーあたりの通話数 |
|---|---|---|---|---|---|---|
| 無料 | 1 | 2 | 1 | 250 | 250 | 3 |
| 個人的な核心 | 2 | 3 | 2 | 5,000 | 250,000 | 15 |
| パーソナルプラス | 5 | 5 | 5 | 10,000 | 500,000 | 30 |
| ビジネスコア | 5 | 10 | 10 | 50,000 | 1,000,000 | 300 |
| ビジネスプラス | 10 | 20 | 25 | 100,000 | 5,000,000 | 600 |
| ビジネスマックス | 25 | 30 | 50 | 250,000 | 10,000,000 | 600 |
| エンタープライズコア | 50 | 50 | 100 | 500,000 | 25,000,000 | 1,000 |
| エンタープライズプラス | 100 | 100 | 250 | 1,000,000 | 50,000,000 | 1,000 |
| エンタープライズマックス | 250 | 200 | 500 | 2,500,000 | 100,000,000 | 1,500 |
すべての呼び出しには、60秒の固定クエリタイムアウトと8MiBの応答上限が設定されており、返されるバイト数は、ExcelやGoogleスプレッドシートのアドインと同じ、プランの月間データ許容量にカウントされます。無料プランではエンドポイントが1つ、月間5MBまで利用できますが、これは1日に何度も呼び出される小さなテーブルであれば十分対応できます。 価格ページをご覧ください プランごとの手当について。
無料とは、あなたが守り続けるプランのことです。 これは期限付きのトライアルではありません。その内容については、 価格ページ.
レポートの場合は、クエリをビジュアルに必要な列のみに限定し、残りは更新スケジュールに任せましょう。Power BI は更新のたびに結果全体を読み込むため、プランの静的な行上限が単一テーブルの上限となります。
安全に保つ
SQLはあなたのものです
呼び出し側は行データを受け取ります。クエリ、テーブル名、接続の詳細を見ることはなく、エンドポイントが実行する処理を変更することもできません。
鍵は1つ、エンドポイントは1つ、呼び出し元も1つ。
1つのキーは、正確に1つのエンドポイントに対してのみ有効です。各ユーザーまたはツールにそれぞれ専用のキーを割り当てれば、すべての呼び出しがそのキーに関連付けられてログに記録されます。いずれかのキーを失効させても、他のキーは引き続き機能します。失効は約5分以内に反映されます。
読み取り専用、壁の向こう側
エージェントは、保存されたSELECT文のみを、ネットワーク内部から独自の外部接続経由で実行します。ポートを開放する必要も、インターネット上に認証情報を送信する必要もありません。
台帳に記録されたすべての通話
の 活動 タブには、拒否されたものも含め、時間、受信者、ステータス、行数、バイト数、期間の各呼び出しが表示されます。 期限切れ 一時的な共有の有効期間と、エンドポイントが指定された日付に自動的にオフになる期間。
何かがうまくいかないとき
| ステータス | コード | 何をするか |
|---|---|---|
| 401 | APIキー必須 / APIキー無効 | ヘッダーが欠落しているか、キーが間違っています。送信 X-API-Key: qsapi_…49文字すべてです。キーはエンドポイントの「共有」タブから再度コピーできます。 |
| 403 | API_KEY_ENDPOINT_MISMATCH | 別のエンドポイントで使用されている有効なキー。各キーは1つのエンドポイントに属します。 |
| 403 | APIキーが取り消されました / APIエンドポイントの有効期限が切れました | キーが失効したか、エンドポイントの有効期限が切れました。新しいキーを作成するか、エンドポイントを復元してください。 |
| 400 | API_PARAM_NOT_OVERRIDABLE | 送信されたパラメータは、所有者が呼び出し可能としてマークしていません。本文には、許可されている名前が一覧表示されています。 |
| 414 | APIクエリが大きすぎます | GETクエリ文字列は8KB、または200個のリスト値を渡しました。同じパラメータをPOST JSONボディとして送信してください。 |
| 413 | API_出力サイズが大きすぎます | 結果が8MiBの上限を超えました。クエリを絞り込むか、エンドポイントをストリーミングに切り替えてください。 |
| 429 | API_RATE_LIMITED | キーまたはエンドポイントへの呼び出しが今この瞬間多すぎます。 再試行後 秒、または上げる レート制限 API設定 → プラン内のデフォルト設定をご覧ください。 |
| 429 | API_DATA_REALM_EXHAUSTED | 所有者の月間データ容量を使い切りました。データ容量は請求月ごとにリセットされます。容量を増やすにはアップグレードしてください。 |
| 503 | APIエージェントが接続されていません | ご自身のデータベースの背後にあるエージェントがオフラインになっています。データ → データエージェントで確認してください。再接続され次第、呼び出しは再び成功します。 |
| 504 | APIクエリタイムアウト | クエリの実行に60秒以上かかりました。フィルタまたはインデックスを追加するか、より絞り込んだクエリを保存してください。 |
すべてのエラーボディは、 {"error": {"code": "…", "message": "…"}} そしてすべての反応には X-QSリクエストID ヘッダー。サポートに問い合わせる際は、IDを引用してください。
Power Queryの具体的な2点: データソースエラー ネーミング 401 これは、Mファイル内のキーが間違っているか、または失効していることを意味します。 Expression.Error: レコードのフィールド「rows」が見つかりませんでした これはエンドポイントがエラーエンベロープを返したことを意味します。ポータルコンソールでURLを実行して内容を確認してください。
人々が尋ねる質問
私のデータはクエリストリームにコピーされますか?
いいえ。エージェントはデータが存在する場所でクエリを実行し、呼び出しで要求された行のみを送信します。その間に同期やキャッシュは行われず、呼び出しごとにクエリが実行されます。
呼び出し側はSQLを変更したり、他のテーブルを要求したりできますか?
いいえ。エンドポイントは保存されたクエリを1つ実行します。呼び出し元は、マークしたパラメーターのみを設定できます。 呼び出し可能、そして値は安全にバインドされます。テキストは引用符で囲まれ、エスケープされ、数値は範囲チェックされ、リストは展開されます。
これをパートナーに渡すにはどうすればいいですか?
エンドポイントの 共有 タブを選択 人々 そして、メールアドレスを入力します。魔法のリンクが送られてくるので、そのアドレスでサインインし(無料アカウントでも構いません)、独自のキーを作成します。アクティビティ タブで、その通話が名前で表示されます。サーバーまたは自動化ツールの場合は、 APIキー 代わりにラベルを付ける。
保存済みのクエリを編集するとどうなりますか?
エンドポイントは次の呼び出しで新しい SQL を実行し、その OpenAPI 仕様が再生成されます。URL とキーは変更されません。フィルタを追加または削除した場合は、 パラメータをロックする 発信者は正しいパラメータを確認できる。
無料プランで本当にこれがカバーされるのですか?
はい。無料プランは、期限切れの試用版ではなく、継続して利用できるプランです。1つのエンドポイント、2つのキー、1回の呼び出しにつき250行が含まれます。含まれる内容の詳細は、 価格ページ.
Power BI サービスのスケジュールされた更新は、ゲートウェイなしでも本当に機能しますか?
はい。このサービスは、あらゆる ウェブコンテンツ 匿名認証または埋め込みヘッダー認証でパブリックインターネットからアクセスできるソース。api.querystreams.com はそのようなソースであり、Power BI がお客様のデータベースにアクセスすることはありません。
DirectQueryは使用できますか?
いいえ。Power BI の Web ソースはインポート モードです。更新スケジュールを使用するか、クエリを絞り込み、プランのレート制限内でより頻繁に更新してください。
TableauとLooker Studioは同じエンドポイントを使用できますか?
Web または REST コネクタを備えたツールであればどれでも、 エクスポート → OpenAPI 3.1仕様 コネクタビルダーのエンドポイントについて説明します。 ?format=csv CSV形式を好むツール向け。
関連ガイド
Setup trouble?
- Agent shows Offline, or Test connection and Browse are greyed out? Check that the Agent is online → Is the Agent online?

