0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

第 3 回 Yellowfin REST API コンテンツのインポート

Last updated at Posted at 2023-05-16

はじめに

REST API を介して、Yellowfin からコンテンツをエクスポートおよびインポートする方法を 3 回に分けて紹介したいと思います。
第 1 回 『Yellowfin REST API エクスポートできるコンテンツの確認』
第 2 回 『Yellowfin REST API コンテンツのエクスポート』
第 3 回 『Yellowfin REST API コンテンツのインポート』

第 3 回は『Yellowfin REST API コンテンツのインポート』です。

インポートするコンテンツの準備

前回記事で、export.yfx にレポートをエクスポートしました。export.yfx には、レポートと依存関係のあるコンテンツが一通り含まれています。このファイルをインポートします。

アクセストークンの取得

REST API を介してリソースにアクセスする場合、必ずアクセストークンが必要となります。
トークンの扱いに関しては、『Yellowfin 情報参照プログラム PHP + REST API でロール / ユーザー / グループなどの情報を取得』の「アクセストークンの取得」の個所をご確認ください。

コンテンツのインポート

先の手順で取得したトークンを用いて、POST でコンテンツをインポートします。HEADER や BODY に必要な情報に関しては、開発者用ドキュメントの Import the contents of the passed import file で詳細をご確認ください。
以下のサンプルコードでは、cURL で実際のインポート処理を実行しています。--form の形式で、export.yfx を読み込んで、エクスポートされたコンテンツをインポートしています。
ちなみに、トークン取得も含めた処理全容は後述します。

import.php
//インポート処理
$text ='curl -X "POST" "http://localhost:8080/api/rpc/import-export/import-content" ';
$text = $text.'-H "Accept: application/vnd.yellowfin.api-v2+json" ';
$text = $text.'-H "Authorization: YELLOWFIN ts='.$time.', nonce=123, token='.$accessToken.'" ';
$text = $text.'-H "Content-Type: multipart/form-data" -H "cache-control: no-cache" ';
$text = $text.'--form "contentToProcess=@export.yfx;type=application/octet-stream" ';
echo exec($text);

コンソールからプログラムを実行します。

プログラム実行
PS> php .\import.php

コンテンツがインポートされます。

プログラム全容

import.php
//変数の宣言
$adminId = 'admin@yellowfin.com.au';
$adminPassword = 'test';
$time = ceil(microtime(true)*1000);
$url = 'http://localhost:8080/api/refresh-tokens';
$url2 = 'http://localhost:8080/api/access-tokens';
$refreshToken = "";
$accessToken = "";

//リフレッシュトークン
$header = array(
	'Authorization:YELLOWFIN ts='.$time.', nonce=123',
	'Accept:application/vnd.yellowfin.api-v2+json',
	'Content-Type:application/json;charset=UTF-8'
);

$body = array(
	'userName'=>$adminId,
	'password'=>$adminPassword
);
$body_json = json_encode($body, JSON_PRETTY_PRINT);

$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $body_json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
$json_result = json_decode($result);
$refreshToken = $json_result->securityToken;
curl_close($ch);

//アクセストークン
$header2 = array(
	'Authorization:YELLOWFIN ts='.$time.', nonce=123, token='.$refreshToken,
	'Accept:application/vnd.yellowfin.api-v2+json',
	'Content-Type:application/json'
);

$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_HTTPHEADER, $header2);
curl_setopt($ch2, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch2, CURLOPT_POSTFIELDS, '');
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_URL, $url2);
curl_close($ch);
$result2 = curl_exec($ch2);
$json_result2 = json_decode($result2);
$accessToken=$json_result2->securityToken;

//インポート処理
$text ='curl -X "POST" "http://localhost:8080/api/rpc/import-export/import-content" ';
$text = $text.'-H "Accept: application/vnd.yellowfin.api-v2+json" ';
$text = $text.'-H "Authorization: YELLOWFIN ts='.$time.', nonce=123, token='.$accessToken.'" ';
$text = $text.'-H "Content-Type: multipart/form-data" -H "cache-control: no-cache" ';
$text = $text.'--form "contentToProcess=@export.yfx;type=application/octet-stream" ';
echo exec($text);

最後に

REST API を介したコンテンツのインポートとエクスポートに関わる内容を 3 回に分けてシリーズ化した。
Yellowfin には、管理用のレガシー API として Webservice も準備されています。使い勝手の柔軟性の高さから、今後は REST API を中心に管理用の API の拡充が進んでいきます。

何はともあれ、良いデータ分析を! See you then! Cheers!!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?