আমি কি কলামের শিরোনামটি একটি = QUERY এ ব্যবহার করতে পারি?


16

1 , 2 , 3=QUERY ফাংশনটির জন্য ডকুমেন্টেশনগুলি পড়া, এর মধ্যে কিছুটির থেকে বোঝা যাচ্ছে যে আমার জিজ্ঞাসায় সরাসরি কলাম শিরোনাম ব্যবহার করতে সক্ষম হওয়া উচিত। উদাহরণস্বরূপ, ফাংশন একটি তৃতীয় ঐচ্ছিক প্যারামিটার নেয় , , আপনি হেডার সারি একটি সংখ্যা নির্দিষ্ট করতে দেয় পারে।=QUERYHEADERS

আমি যদি কলাম শিরোনাম ব্যবহার করতে পারি, তবে কলাম সূচি ব্যবহার করতে না পারলে আমার বেশিরভাগ ক্যোরিয়াস অনেক সুন্দর হতে পারে তবে আমি এটি কার্যকর করতে সক্ষম নই।

উদাহরণ:

A      B         C
---------------------
Name   Phone     City
Vidar  12345678  Oslo
Rupert 32165487  Berlin

আমি কলাম সূচী ব্যবহার করে এটি জিজ্ঞাসা করতে সক্ষম:

=QUERY(Sheet1!A1:C; "select A, B, C where A = 'Vidar'"; 1)

... তবে কলাম শিরোনাম ব্যবহার করছে না:

=QUERY(Sheet1!A1:C; "select A, B, C where Name = 'Vidar'"; 1)

... এটি আমাকে ত্রুটি দেয় : অবৈধ ক্যোয়ারী: কলাম [নাম] সারণীতে বিদ্যমান নেই

কলামের শিরোনামগুলি এভাবে ব্যবহার করা কি আদৌ সম্ভব? যদি তা না হয় তবে HÈADERSপরামিতিটির উদ্দেশ্য কী ?

উত্তর:


4

QUERYফাংশনে আপনি যে তৃতীয় প্যারামিটারের কথা বলছেন তা হડરগুলি নিয়ন্ত্রণ করতে। যদি সেট করা থাকে -1, তবে গুগল স্প্রেডশিট উপলব্ধ ডেটার উপর ভিত্তি করে শিরোনাম চয়ন করার ক্ষেত্রে তার নিজস্ব পছন্দ চিত্রিত করবে: এখানে চিত্র বর্ণনা লিখুন

আমি নিম্নলিখিত ডেটা সেট ব্যবহার করেছি: এখানে চিত্র বর্ণনা লিখুন

যদি সেট করা থাকে 0, তবে কোনও শিরোনাম ব্যবহার করা হবে না, রেখে: এখানে চিত্র বর্ণনা লিখুন

যদি সেট করা থাকে 1, তবে প্রথম সারিটি ব্যবহার করে ব্যবহৃত হবে: এখানে চিত্র বর্ণনা লিখুন

সেট হওয়ার তাহলে 2বা -1বা left blank, তারপর প্রথম দুই সারি ব্যবহৃত হবে ছাড়ার: এখানে চিত্র বর্ণনা লিখুন

শিরোনাম ব্যবহার করে, আপনি আপনার উদাহরণে যেভাবে করেছেন তা সম্ভব নয়। সর্বনিকটবর্তী বস্তু ব্যবহার হবে QUERYফাংশন, বর্ণিত এই উত্তর। এখানে একটি কোয়েরি কলামের নাম ব্যবহার করা হয়েছে।


আহ, ঠিক আছে, তাহলে যদি HEADERS > 0দেওয়া শিরোনামের সারিগুলির সংখ্যা =QUERYক্যোয়ারির ফলাফলগুলির উপরে ফিরে আসে , তাই না? এটি বোধগম্য হয় - আমি ভেবেছিলাম HEADERSযে ক্যোয়ারিতে উপেক্ষা করার জন্য নির্দিষ্ট সারিগুলি নির্দিষ্ট করা আছে।
বিদার এস রামদল

@ বিদার OFFSETবিকল্পটি প্রথম সারিগুলিকে উপেক্ষা করতে ব্যবহার করা যেতে পারে।
জ্যাকব জানু টিনস্ট্রা

আমার অভিজ্ঞতায় 0 শিরোনামের প্যারামিটারটি সেট করা গুগল ডক্স যা বর্ণনা করে বা এখানে চিত্রিত করা হয় তা করে না। এটি মুলত যতদূর আমি বলতে পারি কিছুই করে (যেমন, -১ এর সমান) করে না। অন্য কেউ এটি লক্ষ্য করেছে?
ব্যবহারকারী 24601

1
আমি বিশ্বাস করি যে মূল পোস্টারটির উদ্দেশ্যটি প্রতিবেদনে শিরোনাম পাওয়ার বিষয়ে নয় বরং কলামের সূচী (এ বা বি বা সি এর মতো) ব্যবহারের চেয়ে ক্যোয়ারী বিবৃতিতে শিরোনামের নাম ব্যবহারের বিষয়ে নয়।
ফেরেল

7

কলামের শিরোনামগুলি এভাবে ব্যবহার করা কি আদৌ সম্ভব?

হ্যা এটা সম্ভব. প্রথমে, কলামটির কলাম নম্বর যার সাথে 'নামের' সাথে মিল রয়েছে তার জন্য আপনাকে ম্যাচ ব্যবহার করতে হবে। তারপরে আপনার সেল রেফারেন্স পেতে অ্যাড্রেস ব্যবহার করতে হবে। শেষ অবধি, আপনার সেল রেফারেন্স থেকে সারি নম্বরটি সরাতে সাবস্কিটুট ব্যবহার করতে হবে।

=QUERY(Sheet1!A1:C,"SELECT A, B, C where "&SUBSTITUTE(ADDRESS(1,MATCH("Name",Sheet1!A1:C1,0),4),1,"")&" = 'Vidar'")

3

একটি পুরানো পোস্টের সময়, আমি মিশ্রণটিতে আমার সমাধানটি যুক্ত করতে চেয়েছিলাম। আপনি কলামের নামগুলি ব্যবহার করতে পারেন যা আমি আরও দরকারী বলে মনে করি। আপনি যখন সোর্স ডেটা থেকে কলামগুলি সন্নিবেশ করান বা সরিয়ে ফেলেন তখন আপনাকে আপনার ক্যোয়ারী ফাংশন কলগুলি সম্পাদনা করতে হবে না।

আমি অন্যদের ম্যাচটি ব্যবহার করতে এবং বিকল্প ব্যবহার করতে দেখেছি, কেবল ক্যোয়ারী ফাংশন কলটি করার জন্য আমি কিছু আলাদা কিছু প্রয়োগ করেছি।

প্রথমে - আপনার সমস্ত কলামের নামের মতো একটি সারণী তৈরি করুন। আমার দেখার টেবিলটি একটি 'কনফিগার' শীটের কলাম ই-তে শুরু হয় কারণ আমার শীটে অন্যান্য আইটেম রয়েছে, এটি সহজেই তার নিজস্ব শীটে স্থাপন করা যেতে পারে।

  • কলাম 1 (কলামের নাম)

    =TRANSPOSE( 'Source Data'!1:1 )
    
  • কলাম 2 (কলাম #)

    =arrayformula( row( E2:E ) - 1 )
    
  • কলাম 3 (কলাম পত্র)

    =arrayformula( if( int( F2:F / 26.5 ) > 0, char( int( F2:F / 26.5 )  + 64), "" ) & char( (F2:F - (int( F2:F / 26.5 ) * 26 ) ) + 64 ) )
    

    আমি একটি কলাম নম্বর একটি অক্ষরে রূপান্তর করতে পরিমার্জনে উন্মুক্ত। এই সূত্রটি সীমিত যে এটি কেবল 78৮ টি কলাম পরিচালনা করে। আমার জন্য যথেষ্ট বেশি যদিও।

এখন আপনার ক্যোয়ারী ফাংশন কলটি দেখতে এরকম কিছু দেখাচ্ছে:

=query( 'Source Data'!$A:$L,
"Select " & " " &
vlookup( "Date", Config!$E:$G, 3, false ) & ", " &
vlookup( "Dev Query Engine Conn Count", Config!$E:$G, 3, false ) & ", " &
vlookup( "Dev Conn Limit Retry Count", Config!$E:$G, 3, false ) & ", " &
vlookup( "Dev Max Sequential Retry in One Minute", Config!$E:$G, 3, false ) & ", " &
vlookup( "Dev Conn Limit Errors", Config!$E:$G, 3, false ) & " " &
"where " & vlookup( "Display in Graph.", Config!$E:$G, 3, false ) & "=TRUE " &
"order by " & vlookup( "Date", Config!$E:$G, 3, false ) & " desc "
)

এটিকে সুন্দরভাবে ফর্ম্যাট করে রাখুন এবং পরিচালনা করা মোটেই খারাপ নয়। আপনি যদি ভলিউপ সীমার কলাম সূচি পরিবর্তন করেন তবে কেবলমাত্র আপনিই ক্ষতিগ্রস্থ হবেন। তবে এটি প্রায়শই পরিবর্তন করা উচিত নয়, যদি মোটেও, এটি একটি সহায়ক পরিসর বিবেচনা করে।


3

পুরানো প্রশ্ন, তবে আমি মনে করি এই সমাধানটি উপযুক্ত হতে পারে।

আপনি একটি কাস্টম স্ক্রিপ্ট ফাংশন ব্যবহার করতে পারেন যা শিরোনামের নাম ব্যবহার করে কলাম সূচী (যেমন A, B, C ...) পুনরুদ্ধার করে, এর মতো কিছু করার অনুমতি দেয়:

=query('MySheet'!A2:Z; 
   "select "&colIndex("'MySheet'!A1:Z1"; "Car name")&"  
    where "&colIndex("'MySheet'!A1:Z1"; "Car color")&"='Blue'"))

সঙ্গে colIndexফাংশন:

function colIndex(a1NotationStr, header){
  var range = SpreadsheetApp.getActiveSpreadsheet().getRange(a1NotationStr)
  var row = range.getValues()[0]

  //parse the header row and stop at first header matching our search
  //use the related cell A1Notation and remove all numbers (i.e. 'A45' becomes 'A')
  for(var i=0; i<row.length; i++){
    var currHeader = row[i]
    if(currHeader == header){
      return range.getCell(1, i+1).getA1Notation().replace(/[0-9]/g, '');
    }  
  }
}

যা ব্যবহার ও পড়া সহজ হতে পারে।


0

এখানে আমার সমাধান:

যদি আপনার কাছে "শহর" নামে একটি কলাম থাকে তবে সেই ঘরের সূচী দিয়ে কোথাও একটি নতুন ঘর তৈরি করুন:

   A          B               C        ...         Y               Z        
 --------- ------------ ------------ ------ --------------- --------------- 
  Name        Phone        City        ...    Column Name     Column Index  
  Vidar      12345678     Oslo         ...    Name           A              
  Rupert     32165487     Berlin       ...    Phone          B              
  Sahid      32165487     Colombo      ...    City           C              

তারপরে আপনি সেল জেড: 2 নামক একটি নামকরণ করতে পারেন: "নাম", জেড: 3 = "ফোন", জেড: 4 = "শহর"

আপনার ক্যোয়ারিতে আপনি লিখতে পারেন:

=QUERY( Sheet1!A1:C,"SELECT A, B, C where "&name&" = 'Vidar'"

পুনরায় সাজানো কলামগুলির ট্র্যাক রাখতে হবে না এমন জন্য আপনি এটিকে ঠিকানা ম্যাচের সমাধানের সাথে একত্রিত করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.