数値統計とカテゴリ統計の計算

Sensitive Data Protection を使用して、BigQuery テーブルの個々の列について数値またはカテゴリの数値統計を計算できます。機密データの保護では次の計算を行うことができます。

  • 列の最小値
  • 列の最大値
  • 分位値 列の
  • 列内の値頻度のヒストグラム

数値統計の計算

個々の BigQuery 列の最小値、最大値、および分位値を求めることができます。これらの値を計算するには、DlpJob を構成して、NumericalStatsConfig プライバシー指標をスキャン対象の列の名前に設定します。ジョブを実行すると、機密データの保護が特定の列の統計情報を計算して、その結果を NumericalStatsResult オブジェクトで返します。機密データの保護は、次の数値タイプの統計を計算できます。

  • integer
  • 浮動小数点数
  • 日付
  • 日時
  • タイムスタンプ
  • 時間

スキャン実行から返される統計には、最小値、最大値、および一連のフィールド値を 100 個の等しいサイズのバケットに分割する 99 個の分位値が含まれています。

コードの例

以下に、機密データの保護を使用して数値統計を計算するサンプルコードをいくつかの言語で示します。

C#

Sensitive Data Protection 用のクライアント ライブラリをインストールして使用する方法については、 Sensitive Data Protection クライアント ライブラリをご覧ください。

機密データの保護のために認証するには、アプリケーションのデフォルト認証情報を設定します。 詳細については、ローカル開発環境の認証の設定をご覧ください。


using Google.Api.Gax.ResourceNames;
using Google.Cloud.Dlp.V2;
using Google.Cloud.PubSub.V1;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using static Google.Cloud.Dlp.V2.Action.Types;
using static Google.Cloud.Dlp.V2.PrivacyMetric.Types;

public class RiskAnalysisCreateNumericalStats
{
    public static AnalyzeDataSourceRiskDetails.Types.NumericalStatsResult NumericalStats(
        string callingProjectId,
        string tableProjectId,
        string datasetId,
        string tableId,
        string topicId,
        string subscriptionId,
        string columnName)
    {
        var dlp = DlpServiceClient.Create();

        // Construct + submit the job
        var config = new RiskAnalysisJobConfig
        {
            PrivacyMetric = new PrivacyMetric
            {
                NumericalStatsConfig = new NumericalStatsConfig
                {
                    Field = new FieldId { Name = columnName }
                }
            },
            SourceTable = new BigQueryTable
            {
                ProjectId = tableProjectId,
                DatasetId = datasetId,
                TableId = tableId
            },
            Actions =
                {
                    new Google.Cloud.Dlp.V2.Action
                    {
                        PubSub = new PublishToPubSub
                        {
                            Topic = $"projects/{callingProjectId}/topics/{topicId}"
                        }
                    }
                }
        };

        var submittedJob = dlp.CreateDlpJob(
            new CreateDlpJobRequest
            {
                ParentAsProjectName = new ProjectName(callingProjectId),
                RiskJob = config
            });

        // Listen to pub/sub for the job
        var subscriptionName =