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_dimensionsTrueの場合、ファクト表の列がディメンションとして選択されます。この関数は、ファクト表の名前に基づくデフォルトの分析ビュー名(<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

  },

...

]