カタログ操作

このセクションでは、 SDK が提供する最も使用頻度の高いカタログレベルの操作について確認します。 すべてのメソッドの詳細については 、 API のドキュメントを参照してください。

  • カタログの作成、更新、および削除は、プラットフォームレベルで実行されます。 詳細については、「プラットフォーム操作」セクションを参照してください。

以下のすべてのコード例では、 HERE リソースネーム が読み取り / 書き込み / 管理権限を持つカタログに設定されている状態で、次の操作が前に実行されていることを前提としています。

from here.platform import Platform
platform = Platform()
hrn = "hrn:here:data::olp-here:your-catalog"
catalog = platform.get_catalog(hrn=hrn)

カタログの詳細を取得します

カタログの HERE リソースネーム を指定して、カタログの詳細を取得します。

catalog_details = catalog.get_details()

カタログの最初のバージョンを取得します

プラットフォームで利用可能なカタログの最初のバージョンを取得します。

catalog_first_version = catalog.first_version()

カタログの最新バージョンを取得します

プラットフォームで利用できるカタログの最新バージョンを取得します。

catalog_latest_version = catalog.latest_version()

カタログのバージョンを一覧表示します

プラットフォームで利用できるすべてのカタログバージョンのリストを取得します。

catalog_versions = catalog.list_versions()

単一バージョンの詳細

指定したカタログのバージョンの詳細を取得します。

version = catalog.get_version()

カタログ互換バージョン

指定された HRNS およびバージョンのリストを使用すると、互換性のあるバージョンのイテレータが返されます。このイテレータは、一覧に示されている HERE リソースネーム が、同じバージョンの直接または間接の依存関係に存在するか、または存在しない、このカタログのバージョンのリストを示します。 各バージョンオブジェクトには、 version および shared_dependencies 属性が含まれています。 catalog_dependencies: HRNS のリストとバージョンの制限 : 各 yield のバージョン数

catalog_compatible_versions = catalog.compatible_versions(catalog_dependencies=catalog_dependencies, limit=limit)

カタログにレイヤーがあります

カタログに特定のレイヤー ID のレイヤーがあるかどうかを確認してください。カタログにそのレイヤーが含まれているかどうかに応じて、 True または False が返されます。

result = catalog.has_layer(layer_id=layer_id)

カタログレイヤーを取得します

指定したレイヤー ID の Layer オブジェクトを取得します。

layer = catalog.get_layer(layer_id=layer_id)

カタログレイヤーを追加

既存のカタログに新しいレイヤーを 1 つ追加します。

new_layer = catalog.add_layer(
    id="volatile-layer-1",
    layer_type="volatile",
    name="vol-layer-name",
    summary="vol-layer-summary",
    description="vol-layer-desc",
    content_type="application/x-protobuf",
    partitioning={"scheme": "generic"}
)
# Refresh your catalog
catalog = platform.get_catalog(catalog.hrn)

カタログ更新レイヤー

単一のレイヤーを更新します。

catalog.update_layer(
    layer_id="volatile-layer-1",
    layer_type="volatile",
    name="new-vol-layer-name",
    summary="new-vol-layer-summary",
    description="new-vol-layer-desc",
    content_type="application/x-protobuf",
    partitioning={"scheme": "generic"}
)
# Refresh your catalog
catalog = platform.get_catalog(catalog.hrn)

カタログレイヤーを削除します

カタログのレイヤーを削除します。

catalog.delete_layer(layer_id=layer_id)

カタログへのアクセス権の付与

エンティティへのカタログへのアクセス権を付与します。

entity_type = "sample-entity-type"
entity_id = "sample-entity-id"
action = "sample-action"
catalog.grant_access(entity_type=entity_type,entity_id=entity_id,action=action)

カタログのアクセス権が削除されました

エンティティからカタログへのアクセス権を削除します。

entity_type = "sample-entity-type"
entity_id = "sample-entity-id"
action = "sample-action"
catalog.revoke_access(entity_type=entity_type,entity_id=entity_id,action=action)

カタログを共有します

エンティティとカタログを共有します。

entity_type = "sample-entity-type"
entity_id = "sample-entity-id"
catalog.share(entity_type=entity_type,entity_id=entity_id)

ポータルでカタログを開きます

HERE platform ポータルでカタログページを開きます。

catalog.open_in_portal()

カタログレイヤーに書き込みます

SDK には、書き込み先のレイヤーのタイプに合わせてカスタマイズされた書き込みメソッドが用意されています。

  • write_index_layer
  • write_stream_layers
  • write_versioned_layers
  • write_volatile_layers

インデックス レイヤーを除くすべての場合、同じカタログ内の同じタイプの複数のレイヤーにデータを同時に書き込むことができます。 これを許可し、バージョン管理されたレイヤーの整合性を維持するために、これらの「複数レイヤーの書き込み」メソッドがカタログ操作として表面化されます。 1 つのレイヤーにのみ書き込む必要がある場合は、同等のレイヤーレベルのメソッドを使用する必要があります。 インタラクティブマップレイヤーの場合は、レイヤーレベルのメソッドのみが提供されます。

layers_write_info 構造

ストリーム、バージョン管理された、または揮発性のレイヤーにデータを書き込む場合は、レイヤー ID 、パーティション ID 、およびアップロードするファイルまたはデータをバイト単位で含むネストされた辞書を作成する必要があります。

# layers_write_info for writing single partition to single layer
layer_id = 'my-test-layer'
partition_data = {'23300689': path_to_local_data_file_or_reference_to_in_memory_binary_data}
my_layer_info = {layer_id: partition_data}
# layers_write_info for writing multiple partitions to single layer
layer_id = 'my-test-layer'
partition_data = {'23300689': some_path_or_bytes, '23300347': some_other_path_or_bytes}
my_layer_info = {layer_id: partition_data}
# layers_write_info for writing to partition in two different layers
layer_id_1 = 'layer-1'
layer_id_2 = 'layer-2'
partition_data_1 = {'23300689': some_path_or_bytes}
partition_data_2 = {'23300689': some_other_path_or_bytes}
my_layer_info = {layer_id_1: partition_data_1, layer_id_2: partition_data_2}

以下の例では、書き込みメソッドに必要なパラメータのみを示します。 各メソッドに適用できるオプションのパラメータの詳細については、 API のドキュメントを参照してください。

ストリーム レイヤーに書き込みます

from here.platform import Platform

catalog = platform.get_catalog("HRN-OF-MY-CATALOG")
catalog.write_stream_layers(layers_write_info=my_layer_info)

バージョン付レイヤーに書き込みます

from here.platform import Platform
catalog = platform.get_catalog("HRN-OF-MY-CATALOG")
catalog.write_versioned_layers(layers_write_info=my_layer_info)

ボラタイル レイヤーに書き込みます

from here.platform import Platform
catalog = platform.get_catalog("HRN-OF-MY-CATALOG")
catalog.write_volatile_layers(layers_write_info=my_layer_info)

インデックス レイヤーに書き込みます

インデックス レイヤーへの書き込みは他のレイヤータイプとは異なり、追加の必須のメソッド引数 ( フィールド ) があります。 以下は、構文の簡単な例です。 詳細については、 API のドキュメントを参照してください。

from here.platform import Platform
catalog = platform.get_catalog("HRN-OF-MY-CATALOG")
layer_id = "sample_index_layer"
file_path = "~/sample_data.parquet"
fields = {"ingestionTime": 1114, "partition_id": 343433}
catalog.write_index_layer(layer_id, path_or_data=file_path, fields=fields)

」に一致する結果は 件です

    」に一致する結果はありません