گزارش های دسترسی به داده ها، گزارش های دسترسی به داده ها

شما می‌توانید با استفاده از متد runAccessReport از رابط برنامه‌نویسی کاربردی ادمین نسخه ۱، گزارش‌های دسترسی به داده‌ها را ایجاد کنید. این گزارش هر بار که کاربری داده‌های گوگل آنالیتیکس را می‌خواند، به شما نشان می‌دهد. سوابق دسترسی به داده‌ها تا ۲ سال نگهداری می‌شوند. گزارش‌های دسترسی به داده‌ها فقط برای کاربرانی که نقش ادمین دارند، در دسترس است.

درخواست گزارش دسترسی به داده‌ها با استفاده از کتابخانه کلاینت

سریع‌ترین راه برای شروع کار با گزارش‌های دسترسی به داده‌ها، استفاده از کتابخانه‌های کلاینت است.

برای توضیح نحوه نصب و پیکربندی کتابخانه‌های کلاینت گوگل آنالیتیکس، به راهنمای شروع سریع مراجعه کنید.

در اینجا مثالی با استفاده از کتابخانه کلاینت پایتون آورده شده است که یک پرس‌وجوی دسترسی به داده را اجرا کرده و پاسخ را چاپ می‌کند.

پایتون

from datetime import datetime

from google.analytics.admin import AnalyticsAdminServiceClient
from google.analytics.admin_v1alpha.types import (
    AccessDateRange,
    AccessDimension,
    AccessMetric,
    RunAccessReportRequest,
)


def run_sample():
    """Runs the sample."""
    # TODO(developer): Replace this variable with your Google Analytics 4
    #  property ID (e.g. "123456") before running the sample.
    property_id = "YOUR-GA4-PROPERTY-ID"
    run_access_report(property_id)


def run_access_report(property_id: str, transport: str = None):
    """
    Runs an access report for a Google Analytics property. The report will
    aggregate over dimensions `userEmail`, `accessedPropertyId`,
    `reportType`, `revenueDataReturned`, `costDataReturned`,
    `userIP`, and return the access count, as well as the most recent access
    time for each combination.
    See https://developers.google.com/analytics/devguides/config/admin/v1/access-api-schema
    for the description of each field used in a data access report query.
    Args:
        property_id(str): The Google Analytics Property ID.
        transport(str): The transport to use. For example, "grpc"
            or "rest". If set to None, a transport is chosen automatically.
    """
    client = AnalyticsAdminServiceClient(transport=transport)
    request = RunAccessReportRequest(
        entity=f"properties/{property_id}",
        dimensions=[
            AccessDimension(dimension_name="userEmail"),
            AccessDimension(dimension_name="accessedPropertyId"),
            AccessDimension(dimension_name="reportType"),
            AccessDimension(dimension_name="revenueDataReturned"),
            AccessDimension(dimension_name="costDataReturned"),
            AccessDimension(dimension_name="userIP"),
            AccessDimension(dimension_name="mostRecentAccessEpochTimeMicros"),
        ],
        metrics=[AccessMetric(metric_name="accessCount")],
        date_ranges=[AccessDateRange(start_date="yesterday", end_date="today")],
    )

    access_report = client.run_access_report(request)

    print("Result:")
    print_access_report(access_report)


def print_access_report(response):
    """Prints the access report."""
    print(f"{response.row_count} rows received")
    for dimensionHeader in response.dimension_headers:
        print(f"Dimension header name: {dimensionHeader.dimension_name}")
    for metricHeader in response.metric_headers:
        print(f"Metric header name: {metricHeader.metric_name})")

    for rowIdx, row in enumerate(response.rows):
        print(f"\nRow {rowIdx}")
        for i, dimension_value in enumerate(row.dimension_values):
            dimension_name = response.dimension_headers[i].dimension_name
            if dimension_name.endswith("Micros"):
                # Convert microseconds since Unix Epoch to datetime object.
                dimension_value_formatted = datetime.utcfromtimestamp(
                    int(dimension_value.value) / 1000000
                )
            else:
                dimension_value_formatted = dimension_value.value
            print(f"{dimension_name}: {dimension_value_formatted}")

        for i, metric_value in enumerate(row.metric_values):
            metric_name = response.metric_headers[i].metric_name
            print(f"{metric_name}: {metric_value.value}")

ویژگی‌های مشترک با گزارش‌های اصلی

درخواست‌های گزارش دسترسی به داده، از نظر بسیاری از ویژگی‌های مشترک، معنای مشابهی با درخواست‌های گزارش اصلی دارند. به عنوان مثال ، صفحه‌بندی ، فیلترهای ابعادی و محدوده‌های تاریخ در هر دو نوع گزارش رفتار یکسانی دارند.

Familiarize yourself with the overview of Core reports in the Data API v1 , then return to this page to learn more about Data Access reports.

ایجاد گزارش دسترسی به داده

برای درخواست گزارش دسترسی به داده (Data Access) از متد runAccessReport استفاده کنید.

انتخاب نهاد گزارشگر

مشابه قابلیت گزارش‌گیری اصلی Data API نسخه ۱، متد runAccessReport از Google Analytics Admin API نسخه ۱ نیازمند مشخص شدن شناسه ویژگی Google Analytics در مسیر درخواست URL به شکل properties/GA_PROPERTY_ID است، مانند:

  POST  https://analyticsadmin.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runAccessReport

گزارش دسترسی به داده حاصل، بر اساس سوابق دسترسی به داده گوگل آنالیتیکس برای ویژگی مشخص شده گوگل آنالیتیکس تولید می‌شود.

اگر از یکی از کتابخانه‌های کلاینت Admin API استفاده می‌کنید، نیازی به دستکاری دستی مسیر URL درخواست نیست. اکثر کلاینت‌های API یک پارامتر property ارائه می‌دهند که رشته‌ای به شکل properties/GA_PROPERTY_ID را دریافت می‌کند. برای مثالی از استفاده از کتابخانه‌های کلاینت، به قطعه کد ابتدای این صفحه مراجعه کنید.

ابعاد و معیارها را انتخاب کنید

ابعاد، داده‌های دسترسی به ویژگی شما را توصیف و گروه‌بندی می‌کنند. برای مثال، بُعد userEmail نشان‌دهنده ایمیل کاربری است که به داده‌های گزارش دسترسی داشته است. مقادیر ابعاد در پاسخ‌های گزارش، رشته هستند.

معیارها، اندازه‌گیری‌های کمی یک گزارش را نشان می‌دهند. معیار accessCount تعداد کل رکوردهای دسترسی به داده‌ها را برمی‌گرداند.

برای مشاهده لیست کاملی از نام‌های ابعاد و معیارهای موجود در درخواست‌های گزارش دسترسی به داده‌ها، به طرحواره دسترسی به داده‌ها مراجعه کنید.

درخواست گزارش

برای درخواست گزارش‌های دسترسی به داده‌ها، یک شیء RunAccessReportRequest بسازید. توصیه می‌کنیم با این پارامترهای درخواست شروع کنید:

  • حداقل یک ورودی معتبر در فیلد محدوده تاریخ .
  • حداقل یک ورودی معتبر در فیلد ابعاد .
  • اگر از بُعد epochTimeMicros استفاده نمی‌شود، حداقل یک ورودی معتبر در فیلد معیارها برای دریافت داده‌های کمی برای هر ترکیب از مقادیر بُعد در یک گزارش.

در اینجا یک نمونه درخواست با فیلدهای پیشنهادی ارائه شده است. این پرس و جو لیستی از ایمیل‌های کاربر، آخرین زمانی که آنها در محدوده ۷ روز گذشته به ویژگی مشخص شده دسترسی داشته‌اند و تعداد دسترسی مربوطه را ایجاد می‌کند.

اچ‌تی‌پی

POST https://analyticsadmin.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runAccessReport
{
  "dateRanges": [
    {
      "startDate": "7daysAgo",
      "endDate": "today"
    }
  ],
  "dimensions": [
    {
      "dimensionName": "mostRecentAccessEpochTimeMicros"
    },
    {
      "dimensionName": "userEmail"
    }
  ],
  "metrics": [
    {
      "metricName": "accessCount"
    }
  ]
}

پاسخ را بخوانید

پاسخ گزارش دسترسی به داده (Data Access report) در درجه اول یک سربرگ (header) و ردیف‌ها (rows) است. سربرگ شامل AccessDimensionHeaders و AccessMetricHeaders است که ستون‌های گزارش را فهرست می‌کنند.

هر ردیف گزارش دسترسی شامل AccessDimensionValues ​​و AccessMetricValues ​​برای ستون‌های گزارش است. ترتیب ستون‌ها در درخواست، سربرگ و هر ردیف ثابت است.

در اینجا یک نمونه پاسخ برای درخواست نمونه قبلی آمده است:

{
  "dimensionHeaders": [
    {
      "dimensionName": "mostRecentAccessEpochTimeMicros"
    },
    {
      "dimensionName": "userEmail"
    }
  ],
  "metricHeaders": [
    {
      "metricName": "accessCount"
    }
  ],
  "rows": [
    {
      "dimensionValues": [
        {
          "value": "1667591408427733"
        },
        {
          "value": "Bola@example.net"
        }
      ],
      "metricValues": [
        {
          "value": "1238"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "1667710959827161"
        },
        {
          "value": "Alex@example.net"
        }
      ],
      "metricValues": [
        {
          "value": "475"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "1667868650762743"
        },
        {
          "value": "Mahan@example.net"
        }
      ],
      "metricValues": [
        {
          "value": "96"
        }
      ]
    }
  ],
  "rowCount": 3
}

فیلتر کردن روی رکوردهای دسترسی

از فیلد dimensionFilter مربوط به شیء RunAccessReportRequest برای محدود کردن پاسخ گزارش به مقادیر ابعاد خاصی که با فیلتر مطابقت دارند، استفاده کنید.

مثال زیر گزارشی را بر اساس رکوردهای دسترسی به داده‌های فردی تولید می‌کند و رکوردهای دسترسی یک کاربر با ایمیل Alex@example.net را فیلتر می‌کند. این گزارش شامل زمان هر رکورد دسترسی، ایمیل و آدرس IP کاربر است.

اچ‌تی‌پی

POST https://analyticsadmin.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runAccessReport
{
  "dateRanges": [
    {
      "startDate": "7daysAgo",
      "endDate": "today"
    }
  ],
  "dimensions": [
    {
      "dimensionName": "epochTimeMicros"
    },
    {
      "dimensionName": "userEmail"
    },
    {
      "dimensionName": "userIP"
    }
  ],
  "dimensionFilter": {
    "accessFilter": {
      "fieldName": "userEmail",
      "stringFilter": {
        "matchType": "EXACT",
        "value": "Alex@example.net"
      }
    }
  }
}

به طور مشابه، فیلد metricFilter از شیء RunAccessReportRequest می‌تواند برای محدود کردن پاسخ گزارش به مقادیر متریک خاصی که با فیلتر مطابقت دارند، استفاده شود.

مثال زیر گزارشی شامل ایمیل‌ها و تعداد دسترسی‌های همه کاربرانی که بیش از ۱۰۰ بار به ویژگی مشخص‌شده دسترسی داشته‌اند، تولید می‌کند.

اچ‌تی‌پی

{
  "dateRanges": [
    {
      "startDate": "7daysAgo",
      "endDate": "today"
    }
  ],
  "dimensions": [
    {
      "dimensionName": "userEmail"
    }
  ],
  "metricFilter": {
    "accessFilter": {
      "numericFilter": {
        "operation": "GREATER_THAN",
        "value": {
          "int64Value": 100
        }
      },
      "fieldName": "accessCount"
    }
  },
  "metrics": [
    {
      "metricName": "accessCount"
    }
  ]
}

گزارش‌های نمونه

در اینجا چند نمونه گزارش وجود دارد که می‌توانید امتحان کنید.

آخرین دسترسی‌ها

گزارش دسترسی نمونه زیر که می‌تواند با استفاده از runAccessReport ایجاد شود:

جدیدترین دسترسی به ریزپردازنده‌های زمان عصر یونیکس ایمیل کاربر تعداد دسترسی
۱۵۲۵۲۲۰۲۱۵۰۲۵۳۷۱ Bola@example.net ۵
۱۵۲۵۲۲۰۲۱۵۰۲۸۳۶۱ Alex@example.net ۳۶
۱۵۲۵۲۲۰۲۱۵۰۲۷۶۷۱ Charlie@example.net ۱۱۵۳
۱۵۲۵۲۲۰۲۱۵۰۲۷۳۴۱ Mahan@example.net ۱

این گزارش را می‌توان با پرس‌وجو از ابعاد mostRecentAccessEpochTimeMicros ، userEmail و معیار accessCount ایجاد کرد. این گزارش شامل یک ردیف برای هر کاربر است: بُعد mostRecentAccessEpochTimeMicros رکوردهای دسترسی به داده‌ها را برای هر کاربر که به ویژگی دسترسی پیدا می‌کند، جمع‌آوری می‌کند و آخرین زمان دسترسی (به میکروثانیه یونیکس از زمان epoch ) را برای هر ردیف برمی‌گرداند.

اختلال در دسترسی کاربران

نمونه دیگری از یک گزارش مفید، تفکیک دسترسی‌های کاربران بر اساس مکانیزم دسترسی (مثلاً رابط کاربری گوگل آنالیتیکس، API و غیره) است.

جدیدترین دسترسی به ریزپردازنده‌های زمان عصر یونیکس ایمیل کاربر مکانیزم دسترسی تعداد دسترسی
۱۵۲۵۲۲۰۲۱۵۰۲۸۳۶۷ Alex@example.net فایربیس ۳۱
۱۵۲۵۲۲۰۲۱۵۵۵۵۷۷۸ Alex@example.net رابط کاربری گوگل آنالیتیکس ۱
۱۵۲۵۲۲۰۲۱۵۰۲۲۳۷۸ Bola@example.net رابط کاربری گوگل آنالیتیکس ۶۵
۱۵۲۵۲۲۰۲۱۵۰۲۶۳۸۹ Bola@example.net رابط برنامه‌نویسی کاربردی گوگل آنالیتیکس ۸۹۴
۱۵۲۵۲۲۰۲۱۵۰۲۵۶۳۱ Charlie@example.net رابط برنامه‌نویسی کاربردی گوگل آنالیتیکس ۶۷
۱۵۲۵۲۲۰۲۱۵۰۶۸۳۲۵ Mahan@example.net تبلیغات گوگل ۳

این گزارش را می‌توان با پرس‌وجو از ابعاد mostRecentAccessEpochTimeMicros ، userEmail ، accessMechanism و معیار accessCount ایجاد کرد.

این گزارش شامل یک ردیف برای هر ترکیب کاربر/مکانیزم دسترسی است. بُعد mostRecentAccessEpochTimeMicros شامل آخرین باری است که یک کاربر با استفاده از مکانیزم دسترسی مشخص شده به ویژگی دسترسی پیدا کرده است.

نمای کلی دسترسی به ملک

می‌توان بدون تفکیک کاربران، برای یک ملک گزارش تهیه کرد. برای مثال، گزارش زیر بیان می‌کند که یک ملک چند بار با استفاده از مکانیسم‌های دسترسی مختلف مورد دسترسی قرار می‌گیرد:

شناسه ملک مورد دسترسی نام ویژگی دسترسی یافته مکانیزم دسترسی تعداد دسترسی
۱۲۳۴۵۶۷۸ دمواپلیکیشن فایربیس ۳۱
۱۲۳۴۵۶۷۸ دمواپلیکیشن رابط کاربری گوگل آنالیتیکس ۶۲۴
۱۲۳۴۵۶۷۸ دمواپلیکیشن تبلیغات گوگل ۸۳
۱۲۳۴۵۶۷۸ دمواپلیکیشن رابط برنامه‌نویسی کاربردی گوگل آنالیتیکس ۱۷۴۴

این گزارش را می‌توان با پرس‌وجو از ابعاد accessedPropertyId ، accessedPropertyName ، accessMechanism و معیار accessCount ایجاد کرد.

این گزارش شامل یک ردیف به ازای هر ترکیب شناسه/مکانیسم دسترسی ویژگی است.

دسترسی به داده‌های فردی

برای تولید گزارشی که هر سطر آن بر اساس یک رکورد دسترسی به داده‌ی منفرد باشد، بُعد mostRecentAccessEpochTimeMicros را از یک پرس‌وجو حذف کنید و به جای آن از بُعد epochTimeMicros استفاده کنید. نیازی به پرس‌وجوی معیار accessCount نیست، زیرا هر سطر گزارش حاوی اطلاعاتی در مورد یک رخداد دسترسی به داده‌ی واحد است.

گزارش زیر شامل اطلاعات دقیقی در مورد هر بار دسترسی کاربر به ویژگی مشخص شده است.

ریزپردازنده‌های زمان عصر یونیکس ایمیل کاربر شناسه ملک مورد دسترسی نام ویژگی دسترسی یافته آی‌پی کاربر مکانیزم دسترسی داده‌های هزینه بازگردانده شدند داده‌های درآمد بازگردانده شد
۱۵۲۵۲۲۰۲۱۵۰۲۵۳۷۱ Bola@example.net ۱۲۳۴۵۶۷۸ دمواپلیکیشن ۱.۲.۳.۱ رابط کاربری گوگل آنالیتیکس درست درست
۱۵۲۵۲۲۰۶۴۵۶۴۵۶۴۵ Mahan@example.net ۱۲۳۴۵۶۷۸ دمواپلیکیشن ۱.۲.۳.۵ رابط کاربری گوگل آنالیتیکس نادرست نادرست
۱۵۲۵۲۲۰۲۱۱۳۱۲۳۲۲ Bola@example.net ۱۲۳۴۵۶۷۸ دمواپلیکیشن ۱۱.۲۲.۳۳.۱۱ تبلیغات گوگل درست نادرست
۱۵۲۵۲۲۰۲۱۰۲۳۴۲۲۱ Alex@example.net ۱۲۳۴۵۶۷۸ دمواپلیکیشن ۱۱.۲۲.۳۳.۲۲ فایربیس نادرست نادرست
۱۵۲۵۲۲۰۲۱۵۰۲۸۳۶۸ Alex@example.net ۱۲۳۴۵۶۷۸ دمواپلیکیشن ۱.۲.۳.۲ تبلیغات گوگل نادرست نادرست
۱۵۲۵۲۲۰۲۱۴۲۳۴۲۳۱ Mahan@example.net ۱۲۳۴۵۶۷۸ دمواپلیکیشن ۱۱.۲۲.۳۳.۵۵ تبلیغات گوگل درست درست
۱۵۲۵۲۲۰۴۲۳۴۲۳۴۵۲ Charlie@example.net ۱۲۳۴۵۶۷۸ دمواپلیکیشن ۱.۲.۳.۳ رابط برنامه‌نویسی کاربردی گوگل آنالیتیکس درست نادرست
۱۵۲۵۲۲۰۱۳۲۳۱۲۳۳ Mahan@example.net ۱۲۳۴۵۶۷۸ دمواپلیکیشن ۱.۲.۳.۵ تبلیغات گوگل درست درست

این گزارش را می‌توان با پرس‌وجو از dimensionهای epochTimeMicros ، userEmail ، accessedPropertyId ، accessedPropertyName ، userIP ، accessMechanism ، costDataReturned ، revenueDataReturned ایجاد کرد.