Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

コネクターデータソースは、抽象Java class AbstractDataSourceの実装です。データソースを定義するためには、以下の関数を実装しなくてはいけません。AbstractDataSourceの実装です。データソースを定義するためには、以下の関数を実装しなくてはいけません。

...

 

 

以下の関数は、ユーティリティ関数として利用することができます。以下の関数は、ユーティリティ関数として使用することができます。

...

public abstract Collection<AbstractDataSet> getDataSets(); 

このデータソースで利用できるデータセットのcollectionを返します。データセットの定義については、データセット項目を参照してください。このデータソースで使用できるデータセットのcollectionを返します。データセットの定義については、データセット項目を参照してください。

 

public abstract JDBCMetaData getDataSourceMetaData(); 

...

public abstract boolean authenticate() throws Exception; 

データソースに対する認証が成功したかに応じて、true/falseを返します。これが要求されていない場合は、trueを返します。データソースに対する認証が成功したかどうかに応じて、trueまたはfalseを返します。これが必須でない場合は、trueを返します。

 

public abstract void disconnect(); 

disconnect()は、コネクターへの接続が終了した時に呼び出されます。こちらで任意のクリーンアップを実行します。これが要求されていない場合、この関数は何も実行しません。 」は、コネクターへの接続が閉じられた時に呼び出されます。ここでクリーンアップを実行します。この関数は必須ではない場合、何もできません。

 

public abstract Map<String, Object> testConnection() throws Exception 

成功した接続テストで表示されるテキスト入力のマップを返します。マップへのキーは、Yellowfin UIの接続テストに表示される説明です。

接続テストに失敗した場合は、エラーメッセージが表示されます。この場合マップへのキーはERRORとなり、マップ値に保存されているエラーの説明が表示されます。成功した接続テストで表示されるテキストエントリーのマップを返します。マップへのキーは、Yellowfin UI内の接続テストに表示される説明です。

接続テストに失敗した場合は、エラーメッセージが表示されます。この場合のマップのキーは「ERROR」で、マップ値に保存されているエラーの説明でなくてはいけません。

 

public ScheduleDefinition getScheduleDefinition(); 

このコネクターのためにバックグラウンドタスクを実行する時に、ScheduleDefinitionを返します。ScheduleDefinitionは、以下とともにインスタンス化されます。このコネクターのためにバックグラウンドタスクを実行しなくてはいけない場合の、ScheduleDefinitionを返します。ScheduleDefinitionは、以下のようにインスタンス化されます。

Code Block
languagejava
public ScheduleDefinition(FrequencyTypeCode frequencyTypeCode, String frequencyCode, Integer frequencyUnit);

 

frequencyTypeCode は、以下のように定義されます。nを必要とするタイプの場合、値は は、以下のように定義されます。nを必要とするタイプの場合、値はfrequencyUnitで定義されます。


frequencyUnit 

説明

MINUTES 

毎n分実行します。n分に実行します。

DAILY 

毎日実行します。

WEEKLY 

週次で、n曜日に実行します。週次で、n曜日に実行します。

FORTNIGHTLY 

二週間に一度、frequencyCodeがONE、またはTWOで二週間のうちのどちらの週かを指定し、n曜日に実行します。二週間に一度、frequencyCodeのONE、またはTWOで二週間のうちのどちらの週かを指定し、n曜日に実行します。

MONTHLY 

月次で、n日に実行します。

ENDOFMONTH 

月末に実行します。

QUARTERLY 

三ヶ月に一度、frequencyCodeがONE、TWO、またはTHREEで三ヶ月のうちのどの月かを指定し、その月のn日に実行します。frequencyCodeのONETWOTHREEで三ヶ月のうちのどの月かを指定し、その月のn日に実行します。

BIANNUAL 

六ヶ月に一度、frequencyCodeがONE、TWO、THREE、FOUR、FIVE、またはSIXで半年のうちのどの月かを指定し、その月のn日に実行します。frequencyCodeのONETWOTHREEFOURFIVESIXで半年のうちのどの月かを指定し、その月のn日に実行します。

ANNUAL 

年次で、frequencyCodeがJANUARY、FEBRUARY、MARCH、APRIL、MAY、JUNE、JULY、AUGUST、SEPTEMBER、OCTOBER、NOVEMBER、DECEMBERで一年のうちからどの月に実行するかを指定し、その月のn日に実行します。

例えば、毎週日曜に実行されるバックグラウンドタスクのスケジュールを作成する場合は、以下の通りです。

...

frequencyCodeのJANUARYFEBRUARYMARCHAPRILMAYJUNEJULYAUGUSTSEPTEMBEROCTOBERNOVEMBERDECEMBERで一年のうちからどの月に実行するかを指定し、その月のn日に実行します。


例えば、毎週日曜に実行されるバックグラウンドタスクのスケジュールを作成する場合は、以下の通りです。

Code Block
languagejava
public ScheduleDefinition getScheduleDefinition() {
 
        return new ScheduleDefinition("WEEKLY", null, 1);
 
}

...

public boolean autoRun(); 

autoRunは、任意のバックグラウンドタスクを実行するための呼び出しです。この関数は、getScheduleDefinitionautoRun」は、バックグラウンドタスクを実行するための呼び出しです。この関数は、「getScheduleDefinition()に基づき呼び出されます。これは、ローカルでのダウンロードやキャッシュデータに使用されることもあります。」に基づき呼び出されます。これは、ローカルでのデータのダウンロードやキャッシュに使用されることもあります。

 

protected final byte[ ] loadBlob(String key); 
Anchor
blob1
blob1

loadBlob()は、コネクターにより以前に保存されたblob」は、コネクターにより以前に保存された「blob(byte[])を、通常バックグラウンドタスクで読み込みます。パラメーターキーは、データを読み込むための一意の識別子です。Blobは、保存されたデータソース上でのみ読み込むことができます。areBlobsAvailable」を、通常バックグラウンドタスクで読み込みます。パラメーターキーは、データを読み込むための一意の識別子です。Blobは、保存されたデータソース上でのみ読み込むことができます。「areBlobsAvailable()は、blobアクセスが利用できるかの確認に使用することができます。」を使用して、blobアクセスが使用可能かどうかを確認することができます。

 

protected final boolean saveBlob(String key, byte[ ] data); 
Anchor
blob2
blob2

saveBlob() は、後で使用するためにblobを保存することができます。これは、あとで使用するためにバックグラウンドタスクからのデータを保存する方法です。パラメーターキーは、保存されるデータに一意の識別子です。デーはそのキーに関連するbyte」 は、後で使用するためにblob(byte[])を保存することができます。これは、あとで使用するためにバックグラウンドタスクからのデータを保存する方法です。パラメーターキーは、保存されるデータに一意の識別子です。デーはそのキーに関連するbyte[]です。データへのnullの記述は、指定されたキーに保存されたデータを削除します。Blobは、保存されたデータソース上でのみ読み込むことができます。areBlobsAvailableです。データへのnullの記述は、指定されたキーに保存されたデータを削除します。Blobは、保存されたデータソース上でのみ読み込むことができます。「areBlobsAvailable()は、blobアクセスが利用できるかの確認に使用することができます。」を使用して、blobアクセスが使用可能かどうかを確認することができます。

 

protected final boolean areBlobsAvailable(); 

Blobは、保存されたデータソース上でのみ読み込むことができます。areBlobsAvailableBlobは、保存されたデータソース上でのみ読み込むことができます。「areBlobsAvailable()は、blobアクセスが利用できるかの確認に使用することができます。Blobアクセスは、保存される前にコネクターがテストされている場合は利用することができません。」を使用して、blobアクセスが使用可能かどうかを確認することができます。Blobアクセスは、保存される前にコネクターがテストされている場合は使用することができません。

 

public final Object getAttribute(String key); 

getAttribute()は、接続メータデータから属性をフェッチすることができます。例えば、ユーザー名はYellowfin UIを通した接続のために指定されているかもしれません。パラメーターのキーを使用することで、ユーザー名メタデータフィールドのコンテンツは、外部APIからデータを取得する時にフェッチすることができます。」は、接続メータデータから属性をフェッチすることができます。例えば、Yellowfin UIを通して接続にユーザー名を指定することができます。パラメーターのキーを使用することで、ユーザー名メタデータフィールドのコンテンツは、外部APIからのデータ取得時にフェッチすることができます。

 

public final Integer getSourceId(); 

getSourceId()は、コネクターの関連するソースの一意の内部IDをフェッチするために使用することができます。これは、ある種の外部キャッシュや、データベース内の接続でデータを分離する場合に有益です。」は、コネクターの関連するソースの一意の内部IDをフェッチするために使用することができます。これは、ある種の外部キャッシュや、データベースでの接続によるデータの分離に役立ちます。

 

 

saveBlob()、およびloadBlob() 使用時の推奨事項

...

保存された・キャッシュされたデータの最小化

...

外部ソースから確実に取得することのできないデータのみの保存を推奨します。これは、限られた量の履歴データしか利用できないデータへの「スライディングウィンドウ」アクセスであり、利用不可能になる前にダウンロードしなくてはいけません。非常に遅いデータセットも、クエリー速度を向上させるために、ローカルに保存されたデータセットを使用することができます。

外部ソースから確実に取得することのできないデータのみの保存を推奨します。これは、限られた量の履歴データのみ利用できない「スライディングウィンドウ」へのアクセスの場合であり、利用不可能になる前にダウンロードしなくてはいけません。非常に遅いデータセットも、クエリースピードを向上させるためにローカルに保存されたデータセットを使用することができます。膨大な量のデータをblobシステムに保存する場合は、一定期間後にデータを切り捨てることを推奨します。これは、特定の日数に達したすべてのデータを削除したり、古いデータに対して粒度の細かいデータを保存することを意味します。例えば、ローデータは三ヶ月、日次集約データは一年保存し、古いデータの週次集約データを保存します。これを実行するためには、バックグラウンドジョブでデータを再集約し、再保存しなくてはいけません。

膨大な量のデータをblobシステムに保存する場合は、一定期間後にデータを切り捨てることを推奨します。これは、特定の日数に達したすべてのデータを削除したり、古いデータに対して粒度の細かいデータを保存することを意味します。例えば、ローデータは三ヶ月保存、日次集約データは一年、古いデータのために週次で集約されたデータを保存します。これを実行するためには、バックグラウンドジョブでデータを再集約し、再保存しなくてはいけません。

 

 

...

Blobサイズの最小化

サイズの大きなBlobを保存し、読み込む場合、Yellowfinデータベースやサーバに多大な負荷がかかります。可能であれば、複数のblobに対して保存されたデータを分散させます。

例えば、blob保存システムに100,000ツイートが保存されたインスタンスがあるとします。これは、「ALL000ツイートが保存されたインスタンスがあるとします。これは、「ALL_TWEET」というキーとともに保存されているかもしれませんが、blobの読み込み時間を最小化し、キャッシュシステムに過負荷をかけないようにするために、これはより小さなかたまりに分割し、保存することができます。TWEETS」というキーとともに保存されているでしょうが、blobの読み込み時間を最小化し、キャッシュシステムに過負荷をかけないようにするために、より小さなかたまりに分割し、保存をします。

方法のひとつして、月次でツイートを分割します。

     "201601_TWEETS"  「201601_TWEETS」

     "201602_TWEETS"  「201602_TWEETS」

     "201603_TWEETS"  「201603_TWEETS」

     "201604_TWEETS"  「201604_TWEETS」

 

コネクターからクエリーがリクエストされた場合、フィルターを使用して、どのBlobを使用する必要があるのかを決定し、Blob保存システムから読み込むことができます。例えば、2016-02-05 to 2016-03-05という特定の日付範囲を持つクエリーは、“20160205という特定の日付範囲を持つクエリーは、「201602_TWEETS” と “201603_TWEETS” という2月と、3月のデータを読み込むだけで構いません。TWEETS」と「201603_TWEETS」という2月と、3月のデータを読み込むだけで構いません。

blobからデータセットを結合するためには、膨大なオーバーヘッドが要求されるかもしれません。これを考慮し、複数の小さなblobと、ひとつの大きなblobのパフォーマンスを比較することを推奨します。

blobに最適なサイズはありません。Yellowfinデータベースからblobを読み込む速度は、使用しているハードウェアとDBMSに依存します。Yellowfinで使用される公開コネクターはすべてのサイズをインストールするため、小さく、微力なシステムは考慮する必要があります。blobに最適なサイズはありません。Yellowfinデータベースからblobを読み込む速度は、使用しているハードウェアとDBMSに依存します。公開コネクターはすべてのサイズのYellowfinインストールに使用されるため、小さく、微力なシステムを考慮する必要があります。

 

アプリケーションレベルフィルターと集約

Yellowfinは、アプリケーションレベルのフィルター適用と集約をサポートします。これは、コネクターから結果セットを取得した後のデータを集約し、フィルター適用することができます。

アプリケーションレベル集約は、コネクターの性能に基づきトグルされます。(getColumnsアプリケーションレベルの集約は、コネクターの機能に基づき切り替えられます。(getColumns()により返される)任意のデータセットカラム(列)が、集約(コネクターが集約されたデータを返す)をサポートする場合、集約を使用することができます。

アプリケーションレベルフィルターは、コネクター内のカラム(列)の性能に基づきトグルされます。(getColumnsアプリケーションレベルフィルターは、コネクター内のカラム(列)の機能に基づき切り替えられます。(getColumns()により返される)任意のデータセットカラム(列)が、フィルター(コネクターが独自のフィルターを適用)をサポートする場合、アプリケーションレベルフィルターは無効化され、コネクターカラム(列)フィルターのみ使用することができます。コネクターフィルター(getFilters()により返される)は、アプリケーションレベルフィルターと共存することができます。

...

 コネクターレポート実行時にエラーが発生した場合に、Yellowfin UIへカスタムメッセージを返すことができます。コネクタープラグインからのカスタムメッセージをThirdPartyExceptionUIへカスタムメッセージを返すことができます。これは、コネクタープラグインからのカスタムメッセージを「ThirdPartyException()へ投入することで実行することができます。」へ投入することで実行できます。

Code Block
languagejava
throw new ThirdPartyException("Unable to connect to the Twitter API at this time.");

カスタムエラーメッセージは、通常、レポートがレンダリングされる標準の「Oh No」エラーとして表示されます。これは通常、データセットのexecuteNo」エラーとして表示されます。これは通常、データセットの「execute()関数から投入されます。」関数から投入されます。

 

 

 

 

Section
Column
width40%
前項:コネクターメタデータの定義
Column
width30%

 

Column
width30%

後項:データセットの定義

...