সেভ করা পৃষ্ঠা গুছিয়ে রাখতে 'সংগ্রহ' ব্যবহার করুন
আপনার পছন্দ অনুযায়ী কন্টেন্ট সেভ করুন ও সঠিক বিভাগে রাখুন।
রিসোর্স অ্যাক্সেস কেন্দ্রীভূত পরিচালনার জন্য আপনি আপনার কমিউনিটি সংযোগকারীগুলিতে পরিষেবা অ্যাকাউন্টগুলি ব্যবহার করতে পারেন। একটি সাধারণ ব্যবহারের ক্ষেত্রে ব্যবহারকারীরা তাদের নিজস্ব শংসাপত্র ব্যবহার করে অ্যাক্সেস করতে সক্ষম হবে না এমন ডেটাতে অ্যাক্সেস অর্পণ করা হবে।
সংযোগকারী কার্যকর করার সময়, প্রয়োজনীয় ডেটা আনতে সঞ্চিত শংসাপত্রগুলি ব্যবহার করুন৷
ঐচ্ছিক : ডেটা ফিল্টার করতে অ্যাক্সেস কন্ট্রোল লজিক প্রয়োগ করুন।
উদাহরণ: Looker Studio অ্যাডভান্সড পরিষেবা এবং একটি পরিষেবা অ্যাকাউন্টের মাধ্যমে BigQuery অ্যাক্সেস করা
আপনি একটি সমাধান তৈরি করছেন যেখানে আপনার ব্যবহারকারীরা একটি BigQuery টেবিল থেকে ড্যাশবোর্ড তৈরি করবে। আপনার ব্যবহারকারীরা লুকার স্টুডিওর BigQuery সংযোগকারী ব্যবহার করলে, তাদের BigQuery টেবিলে পড়ার অ্যাক্সেসের প্রয়োজন হবে। তাদের Google ক্লাউড প্ল্যাটফর্ম (GCP)-এর জন্য একটি বিলিং অ্যাকাউন্টেরও প্রয়োজন হবে৷ বিলিং একত্রিত করতে এবং BigQuery ডেটাতে অ্যাক্সেস অর্পণ করতে কীভাবে একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করতে হয় তা নিম্নলিখিত ধাপগুলি ব্যাখ্যা করে৷
পরিষেবা অ্যাকাউন্টটি BigQuery কাজ তৈরি করতে পারে এবং প্রয়োজনীয় টেবিলের ডেটা দেখতে পারে তা নিশ্চিত করুন। বিস্তারিত জানার জন্য BigQuery অ্যাক্সেস কন্ট্রোল দেখুন।
আপনার getData ফাংশনের জন্য, পরিষেবা অ্যাকাউন্টটি প্রমাণীকরণ করুন এবং একটি অ্যাক্সেস টোকেন তৈরি করুন। OAuth2 স্কোপ https://www.googleapis.com/auth/bigquery.readonly এ সেট করুন।
getData প্রতিক্রিয়ায় অন্যান্য কনফিগারেশন আইটেমগুলির সাথে অ্যাক্সেস টোকেন ফেরত দিন।
নিম্নলিখিত সংযোগকারী কোডের একটি সম্পূর্ণ উদাহরণ:
main.js
varcc=DataStudioApp.createCommunityConnector();varscriptProperties=PropertiesService.getScriptProperties();functionisAdminUser(){returntrue;}functiongetAuthType(){varAuthTypes=cc.AuthType;returncc.newAuthTypeResponse().setAuthType(AuthTypes.NONE).build();}functiongetConfig(request){varconfig=cc.getConfig();config.newInfo().setId('generalInfo').setText('This is an example connector to showcase row level security.');returnconfig.build();}functiongetFields(){varfields=cc.getFields();vartypes=cc.FieldType;varaggregations=cc.AggregationType;fields.newDimension().setId('region').setName('Region').setType(types.TEXT);fields.newMetric().setId('sales').setName('Sales').setType(types.NUMBER).setAggregation(aggregations.SUM);fields.newDimension().setId('date').setName('Date').setType(types.YEAR_MONTH_DAY);returnfields;}functiongetSchema(request){return{schema:getFields().build()};}varSERVICE_ACCOUNT_CREDS='SERVICE_ACCOUNT_CREDS';varSERVICE_ACCOUNT_KEY='private_key';varSERVICE_ACCOUNT_EMAIL='client_email';varBILLING_PROJECT_ID='project_id';/** * Copy the entire credentials JSON file from creating a service account in GCP. */functiongetServiceAccountCreds(){returnJSON.parse(scriptProperties.getProperty(SERVICE_ACCOUNT_CREDS));}functiongetOauthService(){varserviceAccountCreds=getServiceAccountCreds();varserviceAccountKey=serviceAccountCreds[SERVICE_ACCOUNT_KEY];varserviceAccountEmail=serviceAccountCreds[SERVICE_ACCOUNT_EMAIL];returnOAuth2.createService('RowLevelSecurity').setAuthorizationBaseUrl('https://accounts.google.com/o/oauth2/auth').setTokenUrl('https://accounts.google.com/o/oauth2/token').setPrivateKey(serviceAccountKey).setIssuer(serviceAccountEmail).setPropertyStore(scriptProperties).setCache(CacheService.getScriptCache()).setScope(['https://www.googleapis.com/auth/bigquery.readonly']);}varBASE_SQL='SELECT d.region, d.sales, d.date '+'FROM `datastudio-solutions.row_level_security.data` d '+'INNER JOIN `datastudio-solutions.row_level_security.access` a '+'ON d.region = a.region '+'where a.email=@email';functiongetData(request){varaccessToken=getOauthService().getAccessToken();varserviceAccountCreds=getServiceAccountCreds();varbillingProjectId=serviceAccountCreds[BILLING_PROJECT_ID];varemail=Session.getEffectiveUser().getEmail();varbqTypes=DataStudioApp.createCommunityConnector().BigQueryParameterType;returncc.newBigQueryConfig().setAccessToken(accessToken).setBillingProjectId(billingProjectId).setUseStandardSql(true).setQuery(BASE_SQL).addQueryParameter('email',bqTypes.STRING,email).build();}