πŸ”

PDE β€” questions

Page 12 of 18 Β· 341 total questions.

Topic 1 Β· Question 221

You store and analyze your relational data in BigQuery on Google Cloud with all data that resides in US regions. You also have a variety of object stores across Microsoft Azure and Amazon Web Services (AWS), also in US regions. You want to query all your data in BigQuery daily with as little movement of data as possible. What should you do?

  • AUse BigQuery Data Transfer Service to load files from Azure and AWS into BigQuery.
  • BCreate a Dataflow pipeline to ingest files from Azure and AWS to BigQuery.
  • CLoad files from AWS and Azure to Cloud Storage with Cloud Shell gsutil rsync arguments.
  • DUse the BigQuery Omni functionality and BigLake tables to query files in Azure and AWS. (correct answer)
Reveal answer & explanation
Correct answer: D

The correct answer is D. Option D: Use the BigQuery Omni functionality and BigLake tables to query files in Azure and AWS.

Explanation

BigQuery is a serverless, petabyte-scale data warehouse for fast SQL analytics with no infrastructure to manage.

Topic 1 Β· Question 222

You have a variety of files in Cloud Storage that your data science team wants to use in their models. Currently, users do not have a method to explore, cleanse, and validate the data in Cloud Storage. You are looking for a low code solution that can be used by your data science team to quickly cleanse and explore data within Cloud Storage. What should you do?

  • AProvide the data science team access to Dataflow to create a pipeline to prepare and validate the raw data and load data into BigQuery for data exploration.
  • BCreate an external table in BigQuery and use SQL to transform the data as necessary. Provide the data science team access to the external tables to explore the raw data.
  • CLoad the data into BigQuery and use SQL to transform the data as necessary. Provide the data science team access to staging tables to explore the raw data.
  • DProvide the data science team access to Dataprep to prepare, validate, and explore the data within Cloud Storage. (correct answer)
Reveal answer & explanation
Correct answer: D

The correct answer is D. Option D: Provide the data science team access to Dataprep to prepare, validate, and explore the data within Cloud Storage.

Explanation

Cloud Storage provides durable, scalable object storage that is fully managed. Dataprep visually explores, cleans, and prepares data for analysis with no code.

Topic 1 Β· Question 223

You are building an ELT solution in BigQuery by using Dataform. You need to perform uniqueness and null value checks on your final tables. What should you do to efficiently integrate these checks into your pipeline?

  • ABuild BigQuery user-defined functions (UDFs).
  • BCreate Dataplex data quality tasks.
  • CBuild Dataform assertions into your code. (correct answer)
  • DWrite a Spark-based stored procedure.
Reveal answer & explanation
Correct answer: C

The correct answer is C. Option C: Build Dataform assertions into your code.

Topic 1 Β· Question 224

A web server sends click events to a Pub/Sub topic as messages. The web server includes an eventTimestamp attribute in the messages, which is the time when the click occurred. You have a Dataflow streaming job that reads from this Pub/Sub topic through a subscription, applies some transformations, and writes the result to another Pub/Sub topic for use by the advertising department. The advertising department needs to receive each message within 30 seconds of the corresponding click occurrence, but they report receiving the messages late. Your Dataflow job's system lag is about 5 seconds, and the data freshness is about 40 seconds. Inspecting a few messages show no more than 1 second lag between their eventTimestamp and publishTime. What is the problem and what should you do?

  • AThe advertising department is causing delays when consuming the messages. Work with the advertising department to fix this.
  • BMessages in your Dataflow job are taking more than 30 seconds to process. Optimize your job or increase the number of workers to fix this.
  • DThe web server is not pushing messages fast enough to Pub/Sub. Work with the web server team to fix this.
  • GMessages in your Dataflow job are processed in less than 30 seconds, but your job cannot keep up with the backlog in the Pub/Sub subscription. Optimize your job or increase the number of workers to fix this. (correct answer)
Reveal answer & explanation
Correct answer: G

The correct answer is G. Option G: Messages in your Dataflow job are processed in less than 30 seconds, but your job cannot keep up with the backlog in the Pub/Sub subscription. Optimize your job or increase the number of workers to fix this.

Explanation

Dataflow runs serverless Apache Beam pipelines for stream and batch data processing with autoscaling. Pub/Sub is a serverless, global messaging service that decouples services and ingests high-volume event streams. This option meets the real-time / low-latency performance requirement.

Topic 1 Β· Question 225

Your organization stores customer data in an on-premises Apache Hadoop cluster in Apache Parquet format. Data is processed on a daily basis by Apache Spark jobs that run on the cluster. You are migrating the Spark jobs and Parquet data to Google Cloud. BigQuery will be used on future transformation pipelines so you need to ensure that your data is available in BigQuery. You want to use managed services, while minimizing ETL data processing changes and overhead costs. What should you do?

  • AMigrate your data to Cloud Storage and migrate the metadata to Dataproc Metastore (DPMS). Refactor Spark pipelines to write and read data on Cloud Storage, and run them on Dataproc Serverless. (correct answer)
  • BMigrate your data to Cloud Storage and register the bucket as a Dataplex asset. Refactor Spark pipelines to write and read data on Cloud Storage, and run them on Dataproc Serverless.
  • CMigrate your data to BigQuery. Refactor Spark pipelines to write and read data on BigQuery, and run them on Dataproc Serverless.
  • DMigrate your data to BigLake. Refactor Spark pipelines to write and read data on Cloud Storage, and run them on Dataproc on Compute Engine.
Reveal answer & explanation
Correct answer: A

The correct answer is A. Option A: Migrate your data to Cloud Storage and migrate the metadata to Dataproc Metastore (DPMS). Refactor Spark pipelines to write and read data on Cloud Storage, and run them on Dataproc Serverless.

Explanation

Cloud Storage provides durable, scalable object storage that is fully managed. Dataproc runs managed Spark and Hadoop clusters for big-data processing.

Topic 1 Β· Question 226

Your organization has two Google Cloud projects, project A and project B. In project A, you have a Pub/Sub topic that receives data from confidential sources. Only the resources in project A should be able to access the data in that topic. You want to ensure that project B and any future project cannot access data in the project A topic. What should you do?

  • AAdd firewall rules in project A so only traffic from the VPC in project A is permitted.
  • BConfigure VPC Service Controls in the organization with a perimeter around project A. (correct answer)
  • CUse Identity and Access Management conditions to ensure that only users and service accounts in project A. can access resources in project A.
  • DConfigure VPC Service Controls in the organization with a perimeter around the VPC of project A.
Reveal answer & explanation
Correct answer: B

The correct answer is B. Option B: Configure VPC Service Controls in the organization with a perimeter around project A.

Explanation

VPC Service Controls create a security perimeter around managed services to prevent data exfiltration. A VPC provides a global, software-defined private network for your Google Cloud resources.

Topic 1 Β· Question 227

You stream order data by using a Dataflow pipeline, and write the aggregated result to Memorystore. You provisioned a Memorystore for Redis instance with Basic Tier, 4 GB capacity, which is used by 40 clients for read-only access. You are expecting the number of read-only clients to increase significantly to a few hundred and you need to be able to support the demand. You want to ensure that read and write access availability is not impacted, and any changes you make can be deployed quickly. What should you do?

  • ACreate a new Memorystore for Redis instance with Standard Tier. Set capacity to 4 GB and read replica to No read replicas (high availability only). Delete the old instance.
  • BCreate a new Memorystore for Redis instance with Standard Tier. Set capacity to 5 GB and create multiple read replicas. Delete the old instance. (correct answer)
  • CCreate a new Memorystore for Memcached instance. Set a minimum of three nodes, and memory per node to 4 GB. Modify the Dataflow pipeline and all clients to use the Memcached instance. Delete the old instance.
  • DCreate multiple new Memorystore for Redis instances with Basic Tier (4 GB capacity). Modify the Dataflow pipeline and new clients to use all instances.
Reveal answer & explanation
Correct answer: B

The correct answer is B. Option B: Create a new Memorystore for Redis instance with Standard Tier. Set capacity to 5 GB and create multiple read replicas. Delete the old instance.

Explanation

Memorystore provides managed in-memory Redis/Memcached caching to reduce latency and offload databases.

Topic 1 Β· Question 228

You have a streaming pipeline that ingests data from Pub/Sub in production. You need to update this streaming pipeline with improved business logic. You need to ensure that the updated pipeline reprocesses the previous two days of delivered Pub/Sub messages. What should you do? (Choose two.)

  • AUse the Pub/Sub subscription clear-retry-policy flag
  • BUse Pub/Sub Snapshot capture two days before the deployment.
  • CCreate a new Pub/Sub subscription two days before the deployment.
  • DUse the Pub/Sub subscription retain-acked-messages flag. (correct answer)
  • EUse Pub/Sub Seek with a timestamp.
Reveal answer & explanation
Correct answer: D

The correct answer is D. Option D: Use the Pub/Sub subscription retain-acked-messages flag.

Explanation

Pub/Sub is a serverless, global messaging service that decouples services and ingests high-volume event streams. This option meets the real-time / low-latency performance requirement.

Topic 1 Β· Question 229

You currently use a SQL-based tool to visualize your data stored in BigQuery. The data visualizations require the use of outer joins and analytic functions. Visualizations must be based on data that is no less than 4 hours old. Business users are complaining that the visualizations are too slow to generate. You want to improve the performance of the visualization queries while minimizing the maintenance overhead of the data preparation pipeline. What should you do?

  • ACreate materialized views with the allow_non_incremental_definition option set to true for the visualization queries. Specify the max_staleness parameter to 4 hours and the enable_refresh parameter to true. Reference the materialized views in the data visualization tool. (correct answer)
  • BCreate views for the visualization queries. Reference the views in the data visualization tool.
  • CCreate a Cloud Function instance to export the visualization query results as parquet files to a Cloud Storage bucket. Use Cloud Scheduler to trigger the Cloud Function every 4 hours. Reference the parquet files in the data visualization tool.
  • DCreate materialized views for the visualization queries. Use the incremental updates capability of BigQuery materialized views to handle changed data automatically. Reference the materialized views in the data visualization tool.
Reveal answer & explanation
Correct answer: A

The correct answer is A. Option A: Create materialized views with the allow_non_incremental_definition option set to true for the visualization queries. Specify the max_staleness parameter to 4 hours and the enable_refresh parameter to true. Reference...

Topic 1 Β· Question 230

You need to modernize your existing on-premises data strategy. Your organization currently uses: β€’ Apache Hadoop clusters for processing multiple large data sets, including on-premises Hadoop Distributed File System (HDFS) for data replication. β€’ Apache Airflow to orchestrate hundreds of ETL pipelines with thousands of job steps. You need to set up a new architecture in Google Cloud that can handle your Hadoop workloads and requires minimal changes to your existing orchestration processes. What should you do?

  • AUse Bigtable for your large workloads, with connections to Cloud Storage to handle any HDFS use cases. Orchestrate your pipelines with Cloud Composer.
  • BUse Dataproc to migrate Hadoop clusters to Google Cloud, and Cloud Storage to handle any HDFS use cases. Orchestrate your pipelines with Cloud Composer. (correct answer)
  • CUse Dataproc to migrate Hadoop clusters to Google Cloud, and Cloud Storage to handle any HDFS use cases. Convert your ETL pipelines to Dataflow.
  • DUse Dataproc to migrate your Hadoop clusters to Google Cloud, and Cloud Storage to handle any HDFS use cases. Use Cloud Data Fusion to visually design and deploy your ETL pipelines.
Reveal answer & explanation
Correct answer: B

The correct answer is B. Option B: Use Dataproc to migrate Hadoop clusters to Google Cloud, and Cloud Storage to handle any HDFS use cases. Orchestrate your pipelines with Cloud Composer.

Explanation

Cloud Storage provides durable, scalable object storage that is fully managed. Dataproc runs managed Spark and Hadoop clusters for big-data processing. Cloud Composer is managed Apache Airflow for orchestrating multi-step data workflows.

Topic 1 Β· Question 231

You recently deployed several data processing jobs into your Cloud Composer 2 environment. You notice that some tasks are failing in Apache Airflow. On the monitoring dashboard, you see an increase in the total workers memory usage, and there were worker pod evictions. You need to resolve these errors. What should you do? (Choose two.)

  • AIncrease the directed acyclic graph (DAG) file parsing interval.
  • BIncrease the Cloud Composer 2 environment size from medium to large.
  • CIncrease the maximum number of workers and reduce worker concurrency. (correct answer)
  • DIncrease the memory available to the Airflow workers.
  • EIncrease the memory available to the Airflow triggerer.
Reveal answer & explanation
Correct answer: C

The correct answer is C. Option C: Increase the maximum number of workers and reduce worker concurrency.

Topic 1 Β· Question 232

You are on the data governance team and are implementing security requirements to deploy resources. You need to ensure that resources are limited to only the europe-west3 region. You want to follow Google-recommended practices. What should you do?

  • ASet the constraints/gcp.resourceLocations organization policy constraint to in:europe-west3-locations. (correct answer)
  • BDeploy resources with Terraform and implement a variable validation rule to ensure that the region is set to the europe-west3 region for all resources.
  • CSet the constraints/gcp.resourceLocations organization policy constraint to in:eu-locations.
  • DCreate a Cloud Function to monitor all resources created and automatically destroy the ones created outside the europe-west3 region.
Reveal answer & explanation
Correct answer: A

The correct answer is A. Option A: Set the constraints/gcp.resourceLocations organization policy constraint to in:europe-west3-locations.

Explanation

Organization Policy sets guardrails that constrain how resources can be configured across the org.

Topic 1 Β· Question 233

You are a BigQuery admin supporting a team of data consumers who run ad hoc queries and downstream reporting in tools such as Looker. All data and users are combined under a single organizational project. You recently noticed some slowness in query results and want to troubleshoot where the slowdowns are occurring. You think that there might be some job queuing or slot contention occurring as users run jobs, which slows down access to results. You need to investigate the query job information and determine where performance is being affected. What should you do?

  • AUse slot reservations for your project to ensure that you have enough query processing capacity and are able to allocate available slots to the slower queries.
  • BUse Cloud Monitoring to view BigQuery metrics and set up alerts that let you know when a certain percentage of slots were used.
  • CUse available administrative resource charts to determine how slots are being used and how jobs are performing over time. Run a query on the INFORMATION_SCHEMA to review query performance. (correct answer)
  • DUse Cloud Logging to determine if any users or downstream consumers are changing or deleting access grants on tagged resources.
Reveal answer & explanation
Correct answer: C

The correct answer is C. Option C: Use available administrative resource charts to determine how slots are being used and how jobs are performing over time. Run a query on the INFORMATION_SCHEMA to review query performance.

Topic 1 Β· Question 234

You migrated a data backend for an application that serves 10 PB of historical product data for analytics. Only the last known state for a product, which is about 10 GB of data, needs to be served through an API to the other applications. You need to choose a cost-effective persistent storage solution that can accommodate the analytics requirements and the API performance of up to 1000 queries per second (QPS) with less than 1 second latency. What should you do?

  • A1. Store the historical data in BigQuery for analytics.2. Use a materialized view to precompute the last state of a product.3. Serve the last state data directly from BigQuery to the API.
  • B1. Store the products as a collection in Firestore with each product having a set of historical changes.2. Use simple and compound queries for analytics.3. Serve the last state data directly from Firestore to the API.
  • C1. Store the historical data in Cloud SQL for analytics.2. In a separate table, store the last state of the product after every product change.3. Serve the last state data directly from Cloud SQL to the API.
  • D1. Store the historical data in BigQuery for analytics.2. In a Cloud SQL table, store the last state of the product after every product change.3. Serve the last state data directly from Cloud SQL to the API. (correct answer)
Reveal answer & explanation
Correct answer: D

The correct answer is D. Option D: 1. Store the historical data in BigQuery for analytics.2. In a Cloud SQL table, store the last state of the product after every product change.3. Serve the last state data directly from Cloud SQL to the API.

Explanation

Cloud SQL is a managed relational database (MySQL/PostgreSQL/SQL Server) that handles patching, backups, and failover. BigQuery is a serverless, petabyte-scale data warehouse for fast SQL analytics with no infrastructure to manage. This option delivers the requirement at the lowest cost.

Topic 1 Β· Question 235

You want to schedule a number of sequential load and transformation jobs. Data files will be added to a Cloud Storage bucket by an upstream process. There is no fixed schedule for when the new data arrives. Next, a Dataproc job is triggered to perform some transformations and write the data to BigQuery. You then need to run additional transformation jobs in BigQuery. The transformation jobs are different for every table. These jobs might take hours to complete. You need to determine the most efficient and maintainable workflow to process hundreds of tables and provide the freshest data to your end users. What should you do?

  • A1. Create an Apache Airflow directed acyclic graph (DAG) in Cloud Composer with sequential tasks by using the Cloud Storage, Dataproc, and BigQuery operators.2. Use a single shared DAG for all tables that need to go through the pipeline.3. Schedule the DAG to run hourly.
  • B1. Create an Apache Airflow directed acyclic graph (DAG) in Cloud Composer with sequential tasks by using the Cloud Storage, Dataproc, and BigQuery operators.2. Create a separate DAG for each table that needs to go through the pipeline.3. Schedule the DAGs to run hourly.
  • C1. Create an Apache Airflow directed acyclic graph (DAG) in Cloud Composer with sequential tasks by using the Dataproc and BigQuery operators.2. Use a single shared DAG for all tables that need to go through the pipeline.3. Use a Cloud Storage object trigger to launch a Cloud Function that triggers the DAG.
  • D1. Create an Apache Airflow directed acyclic graph (DAG) in Cloud Composer with sequential tasks by using the Dataproc and BigQuery operators.2. Create a separate DAG for each table that needs to go through the pipeline.3. Use a Cloud Storage object trigger to launch a Cloud Function that triggers the DAG. (correct answer)
Reveal answer & explanation
Correct answer: D

The correct answer is D. Option D: 1. Create an Apache Airflow directed acyclic graph (DAG) in Cloud Composer with sequential tasks by using the Dataproc and BigQuery operators.2. Create a separate DAG for each table that needs to go through the pipeli...

Explanation

Cloud Storage provides durable, scalable object storage that is fully managed. BigQuery is a serverless, petabyte-scale data warehouse for fast SQL analytics with no infrastructure to manage. Dataproc runs managed Spark and Hadoop clusters for big-data processing.

Topic 1 Β· Question 236

You are deploying a MySQL database workload onto Cloud SQL. The database must be able to scale up to support several readers from various geographic regions. The database must be highly available and meet low RTO and RPO requirements, even in the event of a regional outage. You need to ensure that interruptions to the readers are minimal during a database failover. What should you do?

  • ACreate a highly available Cloud SQL instance in region Create a highly available read replica in region B. Scale up read workloads by creating cascading read replicas in multiple regions. Backup the Cloud SQL instances to a multi-regional Cloud Storage bucket. Restore the Cloud SQL backup to a new instance in another region when Region A is down.
  • BCreate a highly available Cloud SQL instance in region A. Scale up read workloads by creating read replicas in multiple regions. Promote one of the read replicas when region A is down.
  • CCreate a highly available Cloud SQL instance in region A. Create a highly available read replica in region B. Scale up read workloads by creating cascading read replicas in multiple regions. Promote the read replica in region B when region A is down. (correct answer)
  • DCreate a highly available Cloud SQL instance in region A. Scale up read workloads by creating read replicas in the same region. Failover to the standby Cloud SQL instance when the primary instance fails.
Reveal answer & explanation
Correct answer: C

The correct answer is C. Option C: Create a highly available Cloud SQL instance in region A. Create a highly available read replica in region B. Scale up read workloads by creating cascading read replicas in multiple regions. Promote the read replica i...

Explanation

Cloud SQL is a managed relational database (MySQL/PostgreSQL/SQL Server) that handles patching, backups, and failover. By spanning multiple Availability Zones / adding redundancy, this option provides the high availability and resilience required.

Topic 1 Β· Question 237

You are planning to load some of your existing on-premises data into BigQuery on Google Cloud. You want to either stream or batch-load data, depending on your use case. Additionally, you want to mask some sensitive data before loading into BigQuery. You need to do this in a programmatic way while keeping costs to a minimum. What should you do?

  • AUse Cloud Data Fusion to design your pipeline, use the Cloud DLP plug-in to de-identify data within your pipeline, and then move the data into BigQuery.
  • BUse the BigQuery Data Transfer Service to schedule your migration. After the data is populated in BigQuery, use the connection to the Cloud Data Loss Prevention (Cloud DLP) API to de-identify the necessary data.
  • CCreate your pipeline with Dataflow through the Apache Beam SDK for Python, customizing separate options within your code for streaming, batch processing, and Cloud DLP. Select BigQuery as your data sink. (correct answer)
  • DSet up Datastream to replicate your on-premise data on BigQuery.
Reveal answer & explanation
Correct answer: C

The correct answer is C. Option C: Create your pipeline with Dataflow through the Apache Beam SDK for Python, customizing separate options within your code for streaming, batch processing, and Cloud DLP. Select BigQuery as your data sink.

Explanation

Google Cloud Batch schedules and runs batch jobs at scale without managing infrastructure. BigQuery is a serverless, petabyte-scale data warehouse for fast SQL analytics with no infrastructure to manage. Dataflow runs serverless Apache Beam pipelines for stream and batch data processing with autoscaling.

Topic 1 Β· Question 238

You want to encrypt the customer data stored in BigQuery. You need to implement per-user crypto-deletion on data stored in your tables. You want to adopt native features in Google Cloud to avoid custom solutions. What should you do?

  • AImplement Authenticated Encryption with Associated Data (AEAD) BigQuery functions while storing your data in BigQuery. (correct answer)
  • BCreate a customer-managed encryption key (CMEK) in Cloud KMS. Associate the key to the table while creating the table.
  • CCreate a customer-managed encryption key (CMEK) in Cloud KMS. Use the key to encrypt data before storing in BigQuery.
  • DEncrypt your data during ingestion by using a cryptographic library supported by your ETL pipeline.
Reveal answer & explanation
Correct answer: A

The correct answer is A. Option A: Implement Authenticated Encryption with Associated Data (AEAD) BigQuery functions while storing your data in BigQuery.

Explanation

BigQuery is a serverless, petabyte-scale data warehouse for fast SQL analytics with no infrastructure to manage.

Topic 1 Β· Question 239

The data analyst team at your company uses BigQuery for ad-hoc queries and scheduled SQL pipelines in a Google Cloud project with a slot reservation of 2000 slots. However, with the recent introduction of hundreds of new non time-sensitive SQL pipelines, the team is encountering frequent quota errors. You examine the logs and notice that approximately 1500 queries are being triggered concurrently during peak time. You need to resolve the concurrency issue. What should you do?

  • AIncrease the slot capacity of the project with baseline as 0 and maximum reservation size as 3000.
  • BUpdate SQL pipelines to run as a batch query, and run ad-hoc queries as interactive query jobs. (correct answer)
  • CIncrease the slot capacity of the project with baseline as 2000 and maximum reservation size as 3000.
  • DUpdate SQL pipelines and ad-hoc queries to run as interactive query jobs.
Reveal answer & explanation
Correct answer: B

The correct answer is B. Option B: Update SQL pipelines to run as a batch query, and run ad-hoc queries as interactive query jobs.

Explanation

Google Cloud Batch schedules and runs batch jobs at scale without managing infrastructure.

Topic 1 Β· Question 240

You are designing a data mesh on Google Cloud by using Dataplex to manage data in BigQuery and Cloud Storage. You want to simplify data asset permissions. You are creating a customer virtual lake with two user groups: β€’ Data engineers, which require full data lake access β€’ Analytic users, which require access to curated data You need to assign access rights to these two groups. What should you do?

  • A1. Grant the dataplex.dataOwner role to the data engineer group on the customer data lake.2. Grant the dataplex.dataReader role to the analytic user group on the customer curated zone. (correct answer)
  • B1. Grant the dataplex.dataReader role to the data engineer group on the customer data lake.2. Grant the dataplex.dataOwner to the analytic user group on the customer curated zone.
  • C1. Grant the bigquery.dataOwner role on BigQuery datasets and the storage.objectCreator role on Cloud Storage buckets to data engineers.2. Grant the bigquery.dataViewer role on BigQuery datasets and the storage.objectViewer role on Cloud Storage buckets to analytic users.
  • D1. Grant the bigquery.dataViewer role on BigQuery datasets and the storage.objectViewer role on Cloud Storage buckets to data engineers.2. Grant the bigquery.dataOwner role on BigQuery datasets and the storage.objectEditor role on Cloud Storage buckets to analytic users.
Reveal answer & explanation
Correct answer: A

The correct answer is A. Option A: 1. Grant the dataplex.dataOwner role to the data engineer group on the customer data lake.2. Grant the dataplex.dataReader role to the analytic user group on the customer curated zone.

Explanation

Dataplex centrally manages, governs, and organizes data across a data lakehouse.

Showing questions 221–240 of 341 Β· Page 12 of 18