11.1.2 分析ビュー関数
クラスAdp.Analyticsは、分析ビューの操作に使用されます。要求された分析ビューが存在しない場合(作成を除く)、すべての関数はAnalytic view does not exist
メッセージを返します
Analytics.get_list(owner=None)
分析ビュー名のリストを返します。所有者が欠落しているかNoneに設定されている場合は、現在のスキーマを使用します。
Analytics.create(fact_table, dimensions, measures, av_name=None,
owner=None)
この関数は、ディメンション表およびメジャーに基づいて分析ビューを作成します。
measures
: ファクト表の列のリストを指定します。ファクト表にそのような列がない場合、エラーがスローされます。dimensions
: ディメンション表名のリストです。ディメンション表にファクト表のキーとの結合がない場合、関数はエラーをスローします。av_name
: 分析ビューの名前で、このパラメータがない場合は、ファクト表「<fact_table>_AV
」の名前に基づいてデフォルトの分析ビュー名が使用されます。
Analytics.create_auto(fact_table, skip_dimensions=False, owner=None)
この関数は、ファクト表に基づいて分析ビューを作成します。
measures
は、所有者のスキーマのファクト表の列に基づいて自動的に選択されます(所有者が欠落している場合、またはNone
に設定されている場合は、現在のスキーマが使用されます)。dimensions
は適切なディメンション表から選択され、skip_dimensions
がTrue
の場合、ファクト表の列がディメンションとして選択されます。この関数は、ファクト表の名前に基づくデフォルトの分析ビュー名(<fact_table>_AV
)を使用します。
Analytics.drop(model_name, delete_objects=False)
分析ビューが削除されます。
Analytics.compile(av_name, owner=None)
これにより、所有者のスキーマの分析ビューがコンパイルされます(所有者が欠落している場合、またはNoneに設定されている場合は、現在のスキーマを使用します)。
Analytics.get_measures_list(av_name, owner=None)
所有者のスキーマにある分析ビューのすべてのメジャーのメタデータが返されます(所有者が欠落している場合、またはNoneに設定されている場合は、現在のスキーマを使用します)。
Analytics.get_data_preview(entity_name, owner=None)
分析ビュー(階層(名前とキャプション)およびメジャー)、集計データおよび所有者のスキーマの分析ビューからデータを選択するためのSQL問合せのメタデータが返されます(所有者が欠落している場合、または「なし」に設定されている場合、現在のスキーマを使用します)。
Analytics.get_metadata(av_name, owner=None)
所有者のスキーマ内の分析ビューの詳細メタデータが返されます(所有者が欠落しているか、Noneに設定されている場合、現在のスキーマを使用します)。
Analytics.quality_report(av_name)
前述の関数は、av_nameで指定された分析ビューのエラーに関する情報を返します。このメソッドは、分析ビューのファクト表およびディメンションをチェックします。エラーの場合は、エラーのテキスト表現がレポートに含まれます。
Analytics.get_dimension_names(av_name)
分析ビューのディメンション名の配列が返されます。
Analytics.get_fact_table_name(av_name)
分析ビューのファクト表の名前が返されます。
Analytics.get_error_classes_from_dim(av_name, dimension)
分析ビューの分析中に指定されたディメンションのエラーに関する情報が返されます。
Analytics.get_error_classes_from_fact_tab(av_name, fact_tab)
分析ビューの分析中に指定されたファクト表のエラーに関する情報が返されます。
Analytics.get_data(levels, column_names, entity_name, hierarchies, measures, where_condition, owner=None)
所有者のスキーマの分析ビューから集計データが返されます(所有者が欠落している場合、またはNoneに設定されている場合、現在のスキーマを使用します)。
次に、パラメータとその説明を示します:
column_names
: これは、列の配列です。
entity_name
: これは、分析ビューの名前です。
hierarchies
: これは、選択した階層の配列です。
measures
: これは、メジャーの配列です
where_condition
: これは、条件の配列です。各条件には、階層、列、演算子および値の4つのフィールドがあります。戻り値は問合せ結果のリストで、配列内の各アイテムは、値が含まれるcolumn_namesと同じ列を持ちます。
Analytics.get_sql(levels, columnN_names, entity_name, hierarchies, measures, where_condition, owner=None)
get_analytic_view_data
で使用されるSQL問合せが返されます。すべてのパラメータは、get_analytic_view_data
と同じです。
分析の例
この項では、分析APIの使用を開始する際に役立つ次の例を提供します:
- 分析ビューの作成
- 分析ビューの削除
- データ品質
- ディメンション名の取得
- 分析ビュー・メタデータの取得
- 分析ビュー・データの取得
これらの例を使用する前に、ADPインスタンスを作成してORDSに接続する必要があります。
import adp
adp_instance = adp.login('<protocol://host:port>', 'schema_name', 'schema_password')
分析ビューの作成
adp_instance.Analytics.create('SALES')
Output:
'success'
分析ビューの削除
adp_instance.Analytics.drop('SALES_AV')
データ品質
av_name = "SALES_AV"
# Get fact table
text =
adp_instance.Analytics.get_fact_table_name(av_name)
j = json.loads(text)
fact_table = j["FACT_TABLE_NAME"]
#Get dimensions
text =
adp_instance.Analytics.get_dimension_names(av_name)
j = json.loads(text)
dims = []
for dim in j:
dims.append(dim['DIMENSION_NAME'])
# Check error count in fact table
text =
adp_instance.Analytics.get_error_classes_from_fact_tab(av_name, fact_table)
j = json.loads(text)
count = j[0]['ERROR_COUNT']
if count != 0:
print('There are errors in fact table')
else:
print('Fact table has no errors')
#Check error count in dimensions
dim_error = False
for dim in dims:
text =
adp_instance.Analytics.get_error_classes_from_dim(av_name, dim)
count = j[0]['ERROR_COUNT']
if count != 0:
dim_error = True
break
if dim_error:
print('There are errors in dimensions')
else:
print('Dimensions have no errors')
Output:
Fact table has no errors
Dimensions have no errors
分析ビュー・メタデータの取得
adp_instance.get_metadata('SALES_AV')
Output:
{
"hierarchies": [
{
"name": "SALES_AV_CUST_ID_HIER",
"alias": "CUST_ID",
"owner": "ADPTEST",
"captionColumnName": "SALES_AV_CUST_ID_HIER",
"orderColumnName": "SALES_AV_CUST_ID_HIER_HIER_ORDER",
"caption": "CUST_ID",
"levels": [
{
"keys": [
{
"name": "CUST_ID_ATTR",
"columnName": "SALES_AV_CUST_ID_HIER_CUST_ID_ATTR"
}
],
"altKeys": [],
"attributes": [],
"ordering": [
{
"name": "CUST_ID_ATTR",
"direction": "ASC",
"nulls": "FIRST",
"columnName": "SALES_AV_CUST_ID_HIER_CUST_ID_ATTR"
}
],
"name": "CUST_ID",
"caption": "CUST_ID"
}
]
},
...
],
"measures": [
{
"name": "QUANTITY_SOLD",
"columnName": "QUANTITY_SOLD",
"dataType": "NUMBER",
"measureType": "BASE",
"caption": "QUANTITY_SOLD"
},
{
"name": "AMOUNT_SOLD",
"columnName": "AMOUNT_SOLD",
"dataType": "NUMBER",
"measureType": "BASE",
"caption": "AMOUNT_SOLD"
}
],
"av": "SALES_AV",
"owner": "ADPTEST"
}
分析ビュー・データの取得
adp_instance.Analytics.get_data(True,
['SALES_AV_CUST_ID_HIER_CUST_ID_ATTR', 'QUANTITY_SOLD', 'SALES_AV_CUST_ID_HIER_DEPTH'],
'SALES_AV', ['SALES_AV_CUST_ID_HIER'], ['QUANTITY_SOLD'],
[ { 'hierarchy': 'SALES_AV_CUST_ID_HIER', 'column': 'LEVEL_NAME', 'operator': '=', 'value: 'ALL:CUST_ID' } ])
Output:
[
{
"SALES_AV_CUST_ID_HIER_CUST_ID_ATTR": 100,
"SALES_AV_CUST_ID_HIER_DEPTH": 1,
"QUANTITY_SOLD": 5
},
{
"SALES_AV_CUST_ID_HIER_CUST_ID_ATTR": 200,
"SALES_AV_CUST_ID_HIER_DEPTH": 1,
"QUANTITY_SOLD": 4
},
...
]